.htaccess中的默认查询字符串

时间:2013-01-15 13:40:52

标签: .htaccess url-rewriting

有点奇怪的问题,但我想在我的所有网址上设置一个查询字符串。如果参数未设置(或为空),那么我想重定向以包含默认值。

例如:

example.com would need to requrect to example.com?param=a

example.com?param would also need to redirect to example.com?param=a

如果param已设置并且是已知值列表的一部分,那么它应该正常进行:

example.com?param=(a|b|c|d) would go to the respective page a,b,c or d

网站的某些页面使用其他参数进行排序和分页,因此规则不能假设这是唯一的查询字符串。

我尝试过几件事,但一直陷入重定向循环。这是试图设置默认参数:

RewriteCond %{QUERY_STRING} !(^|&)param=(a|b|c|d)($|&)
RewriteRule ^(.*)$ /index.php?rq=$1&param=a [L,QSA]

CMS的主要重写规则是:

RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA]

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

RewriteCond %{QUERY_STRING} !(^|&)param=(a|b|c|d)($|&)
RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ $1?%{QUERY_STRING}&param=a [L]

RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA]