RewriteRule не соответствует? - PullRequest
2 голосов
/ 30 ноября 2010

У меня есть это в моем .htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^url/(.*)$ url.php?url=$1 [L]
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

Почему http://mydomain.ext/url/http://www.google.com/ не соответствует первому правилу, а второму ???

Редактировать: кажется, что работает, когдаЯ закомментирую последнюю строку, но, конечно, я не могу этого сделать.Что происходит?

Edit2: Если я изменю это на это, оно будет работать:

RewriteEngine On
RewriteBase /
RewriteRule ^url/(.*)$ url.php?url=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

Может кто-нибудь объяснить, почему предыдущая версия не работала так, как ожидалось?

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Возможно, запрос переписывается дважды: /url/http://…/url.php/index.php.Исключите этот путь из второго правила, и он должен работать:

RewriteCond $1 !=url.php
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
0 голосов
/ 30 ноября 2010

Возможно, потому что "начало строки якоря": "^" соответствует URL, начинающимся с "url /".

Попробуйте "^.*url/(.*)$", например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...