2013-12-21 3 views
0

У меня есть следующее правило перезаписи:.htaccess игнорируется, когда% метка присутствует

RewriteRule^место/([^ /] +) $ PlaceD.php LF = F & LFC = Место & PlaceID = $ 1

Но когда я называю URL следующим образом (если% знак есть) игнорируется:

http://mydomain/places/sri-maha-bhodi-%2F-bodiya 

Но следующие работы (без% знака):

http://mydomain/places/sri-maha-bhodi-2F-bodiya 

Как я могу изменить правило перезаписи, пожалуйста?

+1

% 2F действительно большая проблема, попытайтесь избежать его появления в URL, если вы можете. Чтобы решить эту проблему, добавьте «AllowEncodedSlashes on» в httpd.conf (не в .htaccess) и измените ([^ /] +) на (. +) В RewriteRule. – Andrew

+0

Очень полезный комментарий от @Andrew, но лучше использовать 'AllowEncodedSlashes NoDecode' по соображениям безопасности. [Подробнее об этом здесь] (http://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes) – anubhava

ответ

0

Apache может кодировать% 2F, который тогда не соответствует RewriteRule. Здесь кое-что происходит, но основное заключается в том, что косые черты не допускаются к кодированию в URL-адресе. Чтобы выполнить эту работу, вам необходимо установить AllowEncodedSlashes NoDecode. Это невозможно сделать в файле .htaccess и должно выполняться в конфиге. Вам также может потребоваться установить другой флаг в Rewrite Rule.

RewriteRule ^places/([^/]+)$ PlaceD.php?LF=F&LFC=Place&PlaceID=$1 [B] 

Источники:
Rewrite rule & escaping (encoded) forward slashes within URL
AllowEncodedSlashes Directive
B (escape backreferences)

+0

Привет, Спасибо за ваш ответ. Но это не сработает :( – jkndmiththinda

+0

Добавлена ​​дополнительная информация и, возможно, еще один способ справиться с этим. Печальные новости, если вы не можете обновить конфигурационный файл, вы не сможете обрабатывать кодированные косые черты. – bswatson

+0

Большое спасибо за ваше обновление и время. Но, к сожалению, я не могу обновить конфигурационный файл. Поэтому я закончил удаление всех косых черт с именами мест. – jkndmiththinda

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