.htaccess для сайта в подкаталоге с использованием инфраструктуры Yii - PullRequest
6 голосов
/ 16 марта 2012

Я рассмотрел несколько примеров конфигураций htaccess для сайтов в подкаталогах и попробовал большинство из них без 100% успеха.

Моя настройка :

  • с использованием фреймворка Yii
  • htaccess at public_html/.htaccess
  • сайт, расположенный внутри public_html/mysite каталога
  • индекс, обрабатывающий все запросы, расположенные в public_html/mysite/frontend/www/index.php

Статус URL-адресов :

  • www.mysite.com отлично работает [ок]
  • www.mysite.com/controller/action показывает мне домашнюю страницу [неправильно]
  • www.mysite.com/mysite/frontend/www/controller/action отлично работает [неправильно, пункт выше должен работать вместо]

Мой .htaccess на данный момент выглядит так:

AddHandler application/x-httpd-php53s .php .html

Options +SymLinksIfOwnerMatch
IndexIgnore */*

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteCond %{REQUEST_URI} !^/mysite/frontend/www

RewriteRule ^(.*)?$ /mysite/frontend/www/index.php [L]

Я перепробовал все, но понятия не имею, почему www.mysite.com/controller/action не будет работать

Любая помощь будет очень признательна! Спасибо!

Ответы [ 4 ]

4 голосов
/ 07 января 2013

Я нашел ответ на этот похожий вопрос полезным.Вот как закончились мои правила перезаписи:

#Forward all non-existent files/directories to Yii
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) subdir/index.php/$1 [QSA,L]

Это берет все несуществующие файлы / папки и отправляет их в скрипт yii с добавлением исходного URL.QSA добавляет любую строку запроса, которая может присутствовать в исходном URL.

0 голосов
/ 26 февраля 2015

Я также не обновил файл .htaccess, проще было изменить виртуальный хост httpd.conf для субдомена и изменить DocumentRoot, чтобы он указывал на вашу папку yii.

0 голосов
/ 20 апреля 2014

Вам не нужно редактировать .htaccess.Вам просто нужно переместить скрипт ввода Yii (index.php) и файл .htaccess по умолчанию из подкаталога в webroot (чтобы они находились непосредственно в public_html).После перемещения index.php и .htaccess в корневой каталог все веб-запросы будут перенаправлены непосредственно в index.php (а не в подкаталог), что исключит часть подкаталога / url.

ПослеВы перемещаете файлы, вам нужно отредактировать index.php, чтобы обновить ссылки на файл yii.php (в каталоге фреймворка Yii), а также файл конфигурации Yii (main.php).Наконец, вам нужно будет переместить каталог ресурсов непосредственно в корень сети, поскольку по умолчанию Yii ожидает, что каталог ресурсов будет расположен в том же месте, что и скрипт ввода.)

Это должно быть все, что вам нужноно если вам нужно больше подробностей, я полностью опишу подход здесь:

http://muhammadatt.tumblr.com/post/83149364519/modifying-a-yii-application-to-run-from-a-subdirectory

0 голосов
/ 16 марта 2012

Вы не упомянули, настроили ли вы Yii's Url Manager для чистых URL.Вы должны это сделать, иначе Yii ожидает, что «route» появится как параметр GET с именем «r».Если вы этого не сделали, обратитесь к этому разделу окончательного руководства

...