.htaccess重定向基于url值

时间:2013-06-25 06:43:15

标签: .htaccess

我有一个网址如下。

http://example.com/listing?listingid=237508&2000

我想要的是将其重定向到该网站的移动版本。

http://example.com/mobile-listing?listingid=237508&2000

问题在于,如果是 example.com/listing ,则应重定向到 example.com/mobile-listing 。如果是 example.com/event ,则应重定向到 example.com/mobile-event ,依此类推。我该怎么做?我已经看到有关基于url参数或getvalue重定向到移动版本的问题。但不是这样。任何帮助将不胜感激。感谢。

3 个答案:

答案 0 :(得分:1)

我发现了来自 ulrich palha 的简单回答,这可能会有所帮助。 question id 9113747 在root的.htaccess文件中,你可以试试这个:

RewriteEngine on
RewriteBase /

RewriteCond %{QUERY_STRING} (^|&)listingid= [NC] 
RewriteRule ^ mobile-listing [L,R=301]
希望这会有所帮助。你可能会改变一点,这应该指向解决方案的正确方向。

答案 1 :(得分:1)

您需要使用RewriteRule directiveQSA以及PT标记

<VirtualHost *:80>
    RewriteEngine on
    RewriteRule ^/listing$ /mobile-listing [PT,QSA] 
    …
</VirtualHost>

标志

  

强制将生成的URI传递回URL映射引擎   用于处理其他URI到文件名的转换器,例如Alias或   重定向。细节...

  

将原始请求URL中的任何查询字符串追加到任何查询   在重写target.details中创建的字符串

更多信息

您可以在Redirecting and Remapping with mod_rewrite找到更多方案。

答案 2 :(得分:0)

对于移动设备或什么不是移动设备没有任何条件,并且总是重定向,那么规则将如下所示:

RewriteCond %{REQUEST_URI} !^/mobile-
RewriteRule ^([^/]+)$ /mobile-$1 [L,R]

查询字符串将自动附加。如果要永久重定向,请将R更改为R=301