htaccess - Что такое правило перезаписи для подстановочной строки после базы? - PullRequest
0 голосов
/ 08 июня 2011

Например, я хочу, чтобы www.example.com/mr.chase перенаправил на www.exapmle.com/index.php?name=mr.chase

В настоящее время я использую символ (точку), чтобы он сначала совпадал с символом, прежде чем проверять правило.

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^\.([^/]+)/?$   index.php?name=$1 [NC]

Выше работает.Тем не менее, если я удалю \., он ПОЯВИТСЯ, чтобы работать (успешно перенаправляет), но я получаю значения, которые я не ожидаю.

Я использую PHP, и обнаруживает, что $ _GET ['name'] производитindex.php вместо mr.chase.

У меня возникают проблемы с захватом переменных GET только в том случае, если основание является символом подстановки, и сопоставлять больше нечего.Понимание было бы здорово!Я прошу прощения, если я не на том пути.

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Я не понимаю ваш пример, и ни о чем не говорилось обсуждение \. и несоответствие. Но чтобы не показывать index.php в качестве параметра, нужно сделать простое утверждение:

 RewriteRule ^(?!index.php)([\w.]+)/?$   index.php?name=$1  [L]
 #                 ^         ^
 #                 |         |
 #               exclude     |
 #                          only letters and dots

Если это не сработает, это проблема с вашей настройкой (FastCGI иногда влечет за собой дополнительное переписывание). Или другой RewriteRule соответствует (= очистить все, кроме приведенного выше примера, и файлы .htaccess в верхних каталогах). А для дальнейшей отладки смотрите $_SERVER["QUERY_STRING"] и другие переменные для деталей.

Настройте RewriteLog, если вы не можете найти причину с помощью этих советов.

0 голосов
/ 08 июня 2011

Это из-за вашего ^ соответствия началу строки. Он ищет точку в качестве первого персонажа. Удалить ^

Кроме того, лучшая модель может быть такой:

/(.*?\.?([^/]+))/?$

Это будет соответствовать 'mr.chase' вместо просто '.chase'

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