Настройка Htaccess Yii 2

Я работаю над проектом Yii2 и настроил его на Wamp Localhost. Мой Wamp я установил псевдоним:

Alias /project "c:/Users/Shaun/Desktop/projects/project/web/" 

<Directory "c:/Users/Shaun/Desktop/projects/project/web/">
    AllowOverride all
</Directory>

В базовом приложении я поместил файл htaccess в веб-каталог (куда он сейчас указывает)

проект/веб/.htaccess

проект/веб/index.php

проект/веб/index-test.php

mod_rewrite определенно включен, я проверял. Я могу перейти к моему корню без проблем:

Это мой файл htaccess, как показано в документации Yii2.

RewriteEngine on

# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php


http://localhost/project/

Когда я перехожу по указанному выше URL-адресу, я отлично выполняю действие SiteController Index. Но когда я пытаюсь перейти, например:

http://localhost/project/site/index

Здесь утверждается:

Запрошенный URL-адрес /Users/Shaun/Desktop/projects/project/web/index.php не найден на этом сервере.

Но оно точно есть?! Если вы видите мою конфигурацию web.php как компонент, который я включил:

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
    ]

Все еще не могу найти. Но если я сделаю это, он отлично покажет маршруты:

http://localhost/project/index.php/site/index

Так обидно, что я этого не хочу. В чем дело?

Спасибо,


person SMKS    schedule 26.07.2014    source источник
comment
модуль перезаписи включен?   -  person Manquer    schedule 27.07.2014
comment
mod_rewrite определенно включен, я проверил   -  person SMKS    schedule 27.07.2014
comment
мои извинения, я пропустил эту строку, это обычно происходит со мной, когда mod_rewrite не включен должным образом или .htaccess не имеет правильно установленных прав доступа к файлу (это не должно быть проблемой для вас, поскольку вы работаете в Windows). попробуйте установить то же самое прямо в вашей конфигурации apache вместо переопределения и полного перезапуска сервера,   -  person Manquer    schedule 27.07.2014


Ответы (4)


Поскольку вы работаете с виртуальным каталогом (например, псевдоним /site/ "/dir/"), вы должны использовать

RewriteBase /site/

в вашем конфигурационном файле апача.

person deofly    schedule 10.11.2014

Структура вашего проекта кажется немного необычной. Есть ли еще одна папка проекта в папке web?

Если ответ да, вы должны поместить файл .htaccess в эту папку проекта.

Но если в папке проекта есть web, то это довольно необычно. Но и в этом случае файл .htaccess должен находиться в папке проекта.

person Semantyc    schedule 17.08.2014
comment
Похоже, вы не читали о контексте проблемы. Это вещи, связанные с Yii 2. - person John Maclein; 27.10.2014

Установите AllowOverride All в httpd.conf или в конфигурации вашего виртуального хоста.
Это обязательно для работы с красивыми URL-адресами.

person jflizandro    schedule 04.07.2015

Вы должны изменить три файла.
basic > .htaccess
basic > web > .htaccess
basic > config > web.php

Используйте код, указанный в приведенном ниже URL-адресе.

http://www.codematrics.com/htaccess-in-yii2-basic-app/

Это поможет вам.

person Miral Viroja    schedule 21.11.2015
comment
Попробуйте это в сочетании с директивой Apache Alias, и вы обнаружите, что этого недостаточно. Проблема в RewriteBase. - person dr fu manchu; 09.11.2016