Htaccess Mod-Rewrite для перезаписи пути к файлу - PullRequest
0 голосов
/ 16 декабря 2011

Я хочу переписать вызовы с:

http: // domain.com/index.php?var1=value&var2=alpha&var3=numeric

Кому:

http: // domain.com

Я пробовал каждое из следующих ниже безуспешно. Можете ли вы предложить лучшее решение?

//#1
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^index\.php\?var1=value&var2=[^&]*&var3=[^&]*$ http://domain.com [R=301]

//#2
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^index\.php\?var1=value&var2=([A-Za-z-]+)&var3=([0-9-]+)$ http://domain.com [R=301]

1 Ответ

0 голосов
/ 16 декабря 2011

Вы не можете сопоставить строку запроса в rewriterule.

Лучше использовать это:

# match 'value' (not sure if this is static, otherwise change it)
RewriteCond %{QUERY_STRING}   (^|&)var1=value           [NC]
# match all characters from A to Z (case insensitive), including -
RewriteCond %{QUERY_STRING}   (^|&)var2=([A-Z-]+)       [NC]
# match all numbers, including -
RewriteCond %{QUERY_STRING}   (^|&)var3=([0-9-]+)$      [NC]
# if all RewriteCond's are satisfied, this RewriteRule will be executed
RewriteRule ^index\.php$      http://domain.com         [R=301,L]

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

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