godaddy .htaccess RewriteRule - PullRequest
       7

godaddy .htaccess RewriteRule

1 голос
/ 28 декабря 2011

Я пытаюсь настроить файл .htacess на хостинге Godaddy (разумеется, apache-linux, а не IIS).Но я застрял с проблемой:

RewriteEngine On
Options +FollowSymLinks 
Rewriterule ^templates/.*$ - [PT] 
Rewriterule ^controllers/.*$ - [PT] 
Rewriterule ^.*$ index.php [NC,L]

Я получаю Внутренняя ошибка сервера для строки:

Переписать ^. * $ Index.php [NC, L]

Я не знаю, как это исправить, я перепробовал все, что знаю ... в основном, я хочу отправить все, что приходит в index.php, гдезагрузчик установлен.Это работает на любом хостинге, который я когда-либо пробовал, но у Godaddy, кажется, есть проблемы с этим: ^. * $ любая помощь будет оценена.

1 Ответ

0 голосов
/ 28 декабря 2011

Это правило

Rewriterule ^. * $ Index.php [NC, L]

выглядит нормально, но убедитесь, что между флагами нет пробеловто есть [NC, L] должно быть изменено на [NC,L].

Вы можете попробовать эквивалент, чтобы увидеть, если он имеет значение (вам не нужен NC , потому что он уже соответствует любому запросу)

Rewriterule .* index.php [L]

Если проблема не в этом, то, скорее всего, правила до этого приведут к сбою.Прокомментируйте их оба и посмотрите, работает ли он, но добавьте RewriteCond, как показано ниже

Options +FollowSymLinks
RewriteEngine On

#if its not already index.php
RewriteCond %{REQUEST_URI}  !index\.php$ [NC]
Rewriterule .* index.php [L]

Если эти правила являются реальной причиной, то я хотел бы знать, каково было ваше намерение с этими правилами, и могут ли онибыть выраженным по-другому, т. е. если целью было переписать все содержимое, кроме содержимого в каталоге шаблонов или контроллеров, то это может быть достигнуто с помощью

#if request is not for templates or controllers directory
RewriteCond %{REQUEST_URI}  !^/(templates|controllers)/ [NC]
Rewriterule .* index.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...