默认查询字符串在.htaccess(Default Query String in .htacces

2019-10-17 13:55发布

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

例如:

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

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

如果参数是设定是已知值的列表的一部分,那么它应该进行正常:

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

该网站的部分页面使用其他参数排序和分页,这样的规则不能想当然地认为这是唯一的查询字符串。

我试了几件事情,但一直得到坚持重定向循环。 这是试图设置默认PARAM:

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]

任何帮助将是巨大的!

Answer 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]


文章来源: Default Query String in .htaccess