htaccess url重定向参数不起作用

时间:2014-10-01 01:42:33

标签: apache .htaccess mod-rewrite url-redirection url-parameters

我搜索过以前有关带参数的网址重定向的问题,但似乎没有人谈到我的特定问题。我不是程序员,所以我真的不知道如何根据我的情况调整其他建议。尝试(并适应其他URL)的特定HTACCESS字符串对我有用。

我对我的WP博客永久链接进行了SEO重组,我发现尽管裸URL正在重定向,但带参数的URL不会重定向,它们会出现404错误。我需要URL参数,因为我的网站是多语言的(Transposh插件)所以" lang"参数告诉网站将内容翻译成什么语言。

我想我可能需要创建一堆HTACCESS重定向,将带有语言参数的旧URL重定向到这些URL的新永久链接,并传递lang参数。

这方面的一个例子是:

Source URL: /this-old-postname/?lang=(*)
Destination URL /blog/this-new-postname/?lang=$

由于每个网址都经过调整以获得最佳SEO贡献,因此无法预测网址格式(尽管参数模式是可预测的)。

我希望我需要写很多这些,每个都是唯一的,所以如果你能够提供一个例子,你能否提供两个重定向,这些重定向适用于以下实际例子?

Source: http://www.travelnasia.com/thailand/bangkok/don-mueang-airport/?lang=zh
Destination: http://www.travelnasia.com/thailand/don-mueang-airport-bangkok/?lang=zh

Source: http://www.travelnasia.com/blog/map-attractions-bangkok-skytrain/?lang=zh
Destination: http://www.travelnasia.com/blog/bangkok-skytrain-bts-mrt-lines/?lang=zh

已启用MOD_REWRITE,并且在HTACCESS中创建的标准重定向确实有效。我非常肯定会实现这一点,我需要使用:

RewriteCond %{QUERY_STRING} ^lang=(.*)$

我理解这可以确保从源URL读取查询字符串。

我认为像这样的重定向规则应该有效,但它没有:

RewriteRule ^test-redirect/$ http://test.travelnasia.com/destination/hanoi/hanoi-vietnam-destination-guide/$1 [L,QSA]

我尝试过很多其他组合,但似乎都没有。

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您不介意包含其他查询字符串参数,[QSA](查询字符串追加)是目前最简单的选项。

如果这是永久性更改,请使用[R=301]进行301重定向。

这应该适用于您的目的

RewriteEngine on # if not already enabled
RewriteRule ^thailand/bangkok/don-mueang-airport/?$ /thailand/don-mueang-airport-bangkok/ [QSA,R=301]
RewriteRule ^/blog/map-attractions-bangkok-skytrain/?$ /blog/bangkok-skytrain-bts-mrt-lines/ [QSA,R=301]
# ...