Нужна помощь с RewriteRule Regex - PullRequest
       0

Нужна помощь с RewriteRule Regex

0 голосов
/ 13 октября 2010

У меня есть этот URL: http://localhost/zina/Artist%20One%20Demo?l=8&m=10&c И это должно стать: http://localhost/?p=Artist%20One%20Demol=8&m=10&c&option=com_zina&Itemid=82

Я использую это, чтобы переписать URL:

RewriteRule ^zina/(.*)?(.*)$ /?p=$1&$2&option=com_zina&Itemid=82 [L,R]

Однако я получаю URL, которые выглядят так: http://localhost/?p=Artist%20One%20Demo/Title%20One&&option=com_zina&Itemid=82

Другими словами, $ 2 не сопоставляется ни с чем. Кто-нибудь может сказать мне, почему?

Ответы [ 2 ]

1 голос
/ 13 октября 2010

? является специальным символом (выбирает 0 или 1 из предыдущего шаблона), .* является жадным (будет соответствовать как можно дальше, поэтому до конца, поэтому $ 2 будет всегда быть пустым, так как $ 1 съедает все до конца строки.

Строка запроса отсутствует в строке, с которой совпадает RewriteRule, и проверка шаблонов в строке запроса обычно выполняется с помощью RewriteCond %{QUERY_STRING} pattern перед тем, какa RewriteRule.

Однако нам не нужно баловаться регулярными выражениями, чтобы получить строку запроса в URL:

RewriteRule ^zina/(.*)$ /?p=$1&option=com_zina&Itemid=82 [L,R,QSA]
0 голосов
/ 13 октября 2010

Это без манжеты и не проверено, но похоже, что вы не убегаете от своего? в регулярном выражении rewrite, чтобы оно воспринималось буквально.

Попробуйте это возможно

RewriteRule ^zina/(.*)\?(.*)$ /?p=$1&$2&option=com_zina&Itemid=82 [L,R] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...