我试图省略" $ main_page ="的$ _GET变量的某些值。在apache重写规则中。例如:
我有一些我想要重写的网址,例如:
http://example.com/index.php?main_page=faq
http://example.com/index.php?main_page=login
http://example.com/index.php?main_page=contact_us
成为:
http://example.com/faq
http://example.com/login
http://example.com/contact_us
我能够通过以下方式实现这一目标:
RewriteCond %{QUERY_STRING} main_page=(.*)
RewriteRule ^index\.php$ %1? [R=302,L]
但是,我还想省略"?main_page ="的某些值。来自重写规则,例如:
http://example.com/index.php?main_page=index
http://example.com/index.php?main_page=page&id=2
http://example.com/index.php?main_page=advanced_search&search_in_description=1&keyword=cialis&inc_subcat=0
http://example.com/index.php?main_page=product_info&cPath=1&products_id=27
所以我尝试了类似的东西:
RewriteEngine on
Options -MultiViews
RewriteCond %{QUERY_STRING} main_page=(?!product_info)(?!page)(?!index)(?!advanced_search)
RewriteRule ^index\.php$ %1? [R=302,L]
但没有运气。我在regx重写方面表现不佳。我希望这是我犯的一个小错误。有人可以提供一些帮助吗?非常感谢。
答案 0 :(得分:1)
要取消多个键值,您可以使用:
RewriteCond %{QUERY_STRING} main_page=((?!index|product_info|page|foo|bar).*)
RewriteRule ^index\.php$ %1? [R=302,L]