我正在使用这样的东西:
Redirect 301 /old http://example.com/new
重定向到http://example.com/new?old
我不希望第一个变量添加到第二个变量,所以我该如何避免这个?
可能是因为文档中其他地方的RewriteCond / RewriteRule吗?完整的文档看起来像这样:
# Enable Rewrite Engine
RewriteEngine On
RewriteBase /
# Remove index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /index.php?$1 [L]
# Remove www.
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# Section redirects
Redirect 301 /old http://example.com/new
任何帮助表示赞赏。感谢。
答案 0 :(得分:1)
修改查询字符串 默认情况下,查询字符串将保持不变。但是,您可以在包含查询字符串部分的替换字符串中创建URL。只需在替换字符串中使用问号,即表示应将以下文本重新注入查询字符串。如果要删除现有查询字符串,请仅使用问号结束替换字符串。要组合新旧查询字符串,请使用[QSA]标志。
这意味着您可以添加'?'在重定向目标的末尾删除“旧”query_string。
试试这个:
# Section redirects
Redirect 301 /old http://example.com/new?
答案 1 :(得分:1)
正如@Seybsen指出的那样,可以使用问号删除查询字符串。
我发现只要在文档中正确定位,我也可以使用RewriteRule
。它必须位于删除index.php的部分之上。
RewriteRule ^old http://example.com/new [R=301,NC,L]
或者,使用query_string:
RewriteRule ^old(.*) http://example.com/new$1 [R=301,NC,L]