2013-06-27 3 views
2

Я пытаюсь использовать дружественный URL таким образом:Дружественные URL с тем же именем файлов

RewriteRule ^index/([1-9]{1,5})$ /index.php?id=$1 [L] 
RewriteRule ^contact/([1-9]{1,5})$ /contact.php?id=$1 [L] 

Но это не работает, и я думаю, что это потому, что я использую имя файла в RegEx.

Это прекрасно работает:

RewriteRule ^home/([1-9]{1,5})$ /index.php?id=$1 [L] 
RewriteRule ^emailus/([1-9]{1,5})$ /contact.php?id=$1 [L] 

я не знаю, что это не представляется возможным использовать имя файла в Фридли URLs, пожалуйста, кто-нибудь знает способ изменить эту конфигурацию? В другом случае мне придется изменить все имена моих файлов.

+0

вы всегда можете включить ведение журнала переписывания, чтобы увидеть, что происходит: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#logging уровень 'trace3' покажет основной путь по правилам и переписал операции, что позволит вам увидеть, КАК это не работает. –

+0

Спасибо, я попробую это – Marcelo

ответ

1

Это звучит как случай Multiviews и mod_negotiation, воспитывающий его уродливую голову, когда он не нужен.

Что, вероятно, происходит то, что у вас есть mod_negotiation видя запрос на /contact/123 и замечает, что есть /contact.php файл, а затем сразу же служит этот файл и обходит mod_rewrite полностью. Вам необходимо отключить его:

Options -Multiviews