2013-12-03 3 views
0

Это меня озадачивает. Это мой Htaccess кодНевозможно переписать на /index.php в htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^/rsrc/(.*)  -      [L,QSA] 
    RewriteRule ^/favicon.ico -      [L,QSA] 
    RewriteRule ^(.*)$   /index.php?__path__=$0 [B,L,QSA] 
</ifModule> 

Это дает мне ошибку 500 сервера. Но если я удалить «/» от «/index.php? __ погладить ...» работает

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^/rsrc/(.*)  -      [L,QSA] 
    RewriteRule ^/favicon.ico -      [L,QSA] 
    RewriteRule ^(.*)$   index.php?__path__=$0 [B,L,QSA] 
</ifModule> 

Это проблема, как вещь Я пытаюсь настроить требует, чтобы у меня это косая черта. Я использую последнюю версию MAMP.

ответ

0

Это потому, что ваше правило является циклическим. Механизм перезаписи продолжает выполнять все правила до тех пор, пока URI не перестанет меняться, а ваш шаблон (.*) соответствует /index.php, поэтому правило продолжает применяться. Вы можете попробовать добавить несколько условий для последнего правила, чтобы предотвратить зацикливание:

RewriteCond %{REQUEST_URI} !index\.php 
RewriteRule ^(.*)$   index.php?__path__=$0 [B,L,QSA] 

Или

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$   index.php?__path__=$0 [B,L,QSA] 
+0

Почему бы шаблон^$ mathch /index.php но не индекс (*.). php, почему это будет только цикл, когда присутствует префиксная косая черта? – sigsve

+0

@ SigurdB.Svela Это немного запутанно, но если вы включите журналы перезаписи, вы увидите, что apache делает некоторую отрисовку косых черт и что иногда обходит цикл. Поскольку цель не имеет косой черты и которая соответствует разрешенному URI косой черты, тогда остановка цикла –

Смежные вопросы