.htaccess Edge Case - PullRequest
       7

.htaccess Edge Case

2 голосов
/ 25 мая 2009

Я использую эти правила и условия в .htaccess, чтобы включить эти

http://www.example.com/index.php/about/history
http://www.example.com/about/history/index.php

в

http://www.example.com/about/history

.htaccess

# ensure there is no /index.php in the address bar
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/
    RewriteRule ^(.*)index\.php$ $1 [R=301,L,NS]

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php(.*)\ HTTP/ [NC]
    RewriteRule ^index\.php/(.*) $1 [NS,NC,L,R=301]

За исключением случаев, когда URL-адрес

http://www.example.com/about/index.php/history/

Это приведет к бесконечному циклу перенаправления. Теперь я знаю, что это, вероятно, редкость, но я бы хотел, чтобы этого не было, если это возможно. Как я могу изменить свои правила, чтобы учесть это?

Более подробная информация о моем .htaccess

1 Ответ

2 голосов
/ 25 мая 2009

Если я правильно понимаю, вы просто хотите удалить index.php, где бы он ни появлялся? В этом случае ваше решение слишком сложное. Вы, вероятно, хотите что-то вроде

RewriteRule ^(.*)index\.php/(.*)$ $1$2 [NS,NC,L,R=301]

Это должно быть единственным правилом, также нет необходимости в RewriteCond

...