.htaccess 使用 GET 参数重定向

Posted

技术标签:

【中文标题】.htaccess 使用 GET 参数重定向【英文标题】:.htaccess redirect using GET parameters 【发布时间】:2016-03-18 09:13:36 【问题描述】:

我已经检查了很多与 .htaccess 重定向相关的答案,但我无法详细说明我的问题:

我有一个旧网站,其中的博客条目如下:

http://ellrohir.mzf.cz/index.php?page=blog&id=77

现在我还有一个带有“不错的网址”的新网站,可以使用以下方式找到博客条目:

http://alois-seckar.cz/politics-blog/77

我想“关闭”旧页面并将所有旧链接重定向到新网站。如何捕获旧网址并将其转移到新网址?我仍然想不出必要的 .htaccess 代码:(

【问题讨论】:

.htaccess URL redirect的可能重复 【参考方案1】:

试试这个:

RewriteEngine on


RewriteCond %QUERY_STRING ^page=([^&]+)&id=([^&]+)$ [NC]
RewriteRule ^index\.php$ http://alois-seckar.cz/politics-%1/%2? [NC,L,R]

末尾的空问号对于丢弃目标网址中的原始查询字符串很重要。

%n 是 RewriteCond 中正则表达式的一部分,它是在 ([ 和 ]+) 之间匹配的部分。

此规则将重定向

example.com/index.php?page=foo&id=bar

example2.com/politics-foo/bar

【讨论】:

这个很棒!【参考方案2】:

您可以使用.htaccess 重定向到另一个网站

RewriteEngine on
RewriteRule ^/index.php?page=blog&id=(.*)?$ http://example.com /politics-blog/$1 [R=301,L]

【讨论】:

对我来说,这个没有做任何事情:(

以上是关于.htaccess 使用 GET 参数重定向的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 仅在 GET 参数存在时重定向

301 重定向 GET 参数

.htaccess 中的 301 重定向错误,显示“Bots Get Naked Version”而不是重定向

使用 .htaccess 将路径字符串作为 GET 变量重定向到主页

.htaccess 从 GET 变量重定向到 url 字符串

使用多个参数重定向 URL 以清除 .htaccess 中的 URL