我需要向我当前的 URL 添加一个参数(但前提是尚未设置参数)。应该保留其他参数(我想我可以通过添加%{QUERY_STRING}
?)。
例子:
index.php?page=1
因此,假设我想始终为语言添加一个参数 - URL 应该如下所示:
index.php?page=1&lang=1
但如果lang
已经设置,它应该什么都不做。
我需要向我当前的 URL 添加一个参数(但前提是尚未设置参数)。应该保留其他参数(我想我可以通过添加%{QUERY_STRING}
?)。
例子:
index.php?page=1
因此,假设我想始终为语言添加一个参数 - URL 应该如下所示:
index.php?page=1&lang=1
但如果lang
已经设置,它应该什么都不做。
通过启用 mod_rewrite 和 .htaccess httpd.conf
,然后将此代码放在您.htaccess
的DOCUMENT_ROOT
目录下:
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]
为此,您需要在 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}。
希望这可以帮助。