2

我需要向我当前的 URL 添加一个参数(但前提是尚未设置参数)。应该保留其他参数(我想我可以通过添加%{QUERY_STRING}?)。

例子:

index.php?page=1

因此,假设我想始终为语言添加一个参数 - URL 应该如下所示:

index.php?page=1&lang=1

但如果lang已经设置,它应该什么都不做。

4

2 回答 2

1

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_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]
于 2013-08-22T15:52:55.750 回答
0

为此,您需要在 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}。

希望这可以帮助。

于 2013-08-22T15:34:46.820 回答