обратная ссылка htaccess, не возвращающая значения для определенных совпадений - PullRequest
1 голос
/ 18 мая 2011

У меня действительно странная проблема с перенаправлением в моем .htaccess.

Правило, которое я установил:

RewriteRule ^([a-zA-Z0-9\-]*)/$ ?mode=book&permalink=$1

Соответствует обеим фразам:http://www.fernwoodpublishing.ca/About-Canada-Youth-and-Children/

и фразы, состоящие из одного слова:http://www.fernwoodpublishing.ca/Kaandossiwin/

Однако, когда он соответствует этим фразам, состоящим из одного слова, без дефисов, обратная ссылка не проходит должным образом.Таким образом, если приведенный выше пример ДОЛЖЕН перейти к

?mode=book&permalink=Kaandossiwin

, который будет работать правильно, вместо этого он перейдет к

?mode=book&permalink=

, который просто создает множество ошибок и разбивает материал.

Я попробовал несколько способов исправить это, и, похоже, ничто не помогает.Кто-нибудь более опытный с htaccess, знает, почему обратная ссылка не возвращается в этих конкретных случаях?(Я проверил это на других примерах и точно испытал ту же проблему, поэтому я уверен, что она совпадает во всех случаях, но возвращает обратную ссылку только в тех случаях, когда совпадение содержит дефисы.

Большое спасибо!

1 Ответ

0 голосов
/ 18 мая 2011

Попробуйте следующее.Я считаю, что группировка искажена.

RewriteRule ^([\w-]+)/$ ?mode=book&permalink=$1

Я бы также предложил поставить префикс вашей ссылки, поскольку этот формат URL довольно свободныйТо есть он соответствует любому URL с буквенно-цифровым, подчеркиванием или тире на верхнем уровне.Что-то вроде следующего является более гибким.

RewriteRule ^book/([\w-]+)/?$ book.php?permalink=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...