我需要向当前的URL添加一个参数(但仅当参数尚未设置时)。其他参数应该保留(我想我可以通过添加%{QUERY_STRING}
来实现)。
示例:
index.php?page=1
因此,假设我希望始终为语言添加一个参数- URL应如下所示:
index.php?page=1&lang=1
但是如果已经设置了lang
,它应该什么也不做。
发布于 2013-08-22 23:52:56
通过httpd.conf
启用mod_rewrite和.htaccess,然后将以下代码放入DOCUMENT_ROOT
目录下的.htaccess
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !(^|&)L=[^&]+ [NC]
RewriteRule ^(index\.php)$ $1?L=0 [L,QSA,NC,R=301]
发布于 2013-08-22 23:34:47
为此,您需要在RewriteRule之前使用RewriteCond和%{QUERY_STRING}。
当查询包含lang参数时,您似乎不想重写,因此可以使用负RewriteCond,例如:
RewriteCond %{QUERY_STRING} !(^|&)lang=1($|&)
RewriteRule . /index.php [L]
如上所述,当URL已经具有"lang=1“时,RewriteCond将失败,因此不应用以下RewriteRule (在此任意示例中,它只是将请求重写为/index.php,但您可以根据自己的特定需求进行调整)。
您的实际规则可能不同,但机制保持不变,请使用RewriteCond和%{QUERY_STRING}。
希望这能有所帮助。
https://stackoverflow.com/questions/18384044
复制相似问题