Правило перезаписи Apache не запускается - PullRequest
0 голосов
/ 09 февраля 2012

Я хочу взять этот URL:

http://www.awesomehost.com/accountants/Ceribelli-Associates-cd01qazwsxoztfnlvsim.html

И перенаправить его на:

http://www.awesomehost.com/accountants/accountant-directory.php?ID=cd01qazwsxoztfnlvsim

И вот что у меня есть в моем .htaccess для каталога бухгалтеров:

RewriteEngine On
RewriteRule ^accountants/(.*)-cd0(.*).html /accountants/accountant-directory.php?ID=cd0$2 [L,P]

Я также попробовал его с косой чертой и убрал флаг P:

RewriteEngine On
RewriteRule ^/accountants/(.*)-cd0(.*).html /accountants/accountant-directory.php?ID=cd0$2 [L]

Но по какой-то причине это не срабатывает?

Когда я вставляю произвольный текст в файл .htaccess, я получаю ошибки apache, поэтому я знаю, что он читает файл ...

Любая помощь там?

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

RewriteRule начинает совпадение после TLD, и вы сопоставляете начало строки без косой черты.Так что, если вы попробуете:

RewriteRule ^/accountants/(.*)-cd0(.*).html ...

Кстати, будьте осторожны, используя программно сгенерированный URL с. * Rewrite - следите за соответствием жадности и не жадности.

Такжеуверен, что [P] это то, что вы хотите?Вы можете подвергнуться риску проксирования на непредусмотренные серверы, если использовался злонамеренно созданный URL и ваша RewriteRule неадекватно отфильтрована.

0 голосов
/ 09 февраля 2012

Попробуйте удалить часть шаблона «бухгалтеры /». Apache начинает сопоставление только из текущего каталога файла .htaccess.

RewriteEngine On
RewriteBase /accountants
RewriteRule ^(.*?)-cd0(.*?).html accountant-directory.php?ID=cd0$2 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...