Перепишите URL в index.php, но избегайте index.php в URL - PullRequest
2 голосов
/ 30 мая 2010

Я пытаюсь внутренне перенаправить все запросы в index.php и внешне перенаправить все запросы, которые содержат index.php, с помощью файла .htaccess.

Таким образом, URL-адреса типа http://host/test должны обрабатываться index.php, а URL-адреса типа http://host/index.php/test должны перенаправляться на http://host/test, а затем обрабатываться index.php (без перенаправления браузера to index.php)

Я пробовал следующее, но всегда получаю сообщение «Слишком много перенаправлений ...»:

RewriteRule ^index\.php/?(.*)$ /$1 [R,L]
RewriteRule .* index.php/$0 [L]

Ответы [ 2 ]

2 голосов
/ 30 мая 2010

Вам нужно взглянуть на URL в строке запроса, чтобы узнать, был ли запрошен /index.php/…:

RewriteCond %{THE_REQUEST} ^GET\ /index\.php/?([^ ]*)
RewriteRule ^index\.php/?(.*) /$1 [R,L]
RewriteCond $0 !^index\.php($|/)
RewriteRule .* index.php/$0 [L]
0 голосов
/ 30 мая 2010

Помимо прочего, если вы хотите сделать это без перенаправления браузера, вам не нужно использовать параметр [R], что означает R редактировать браузер.

Попробуйте это:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(index.php/)?.* index.php [L]
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...