我有一个网址如下。
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重定向到移动版本的问题。但不是这样。任何帮助将不胜感激。感谢。
答案 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
directive和QSA
以及PT
标记
<VirtualHost *:80>
RewriteEngine on
RewriteRule ^/listing$ /mobile-listing [PT,QSA]
…
</VirtualHost>
PT
:强制将生成的URI传递回URL映射引擎 用于处理其他URI到文件名的转换器,例如Alias或 重定向。细节...
QSA
:将原始请求URL中的任何查询字符串追加到任何查询 在重写target.details中创建的字符串
您可以在Redirecting and Remapping with mod_rewrite找到更多方案。
答案 2 :(得分:0)
对于移动设备或什么不是移动设备没有任何条件,并且总是重定向,那么规则将如下所示:
RewriteCond %{REQUEST_URI} !^/mobile-
RewriteRule ^([^/]+)$ /mobile-$1 [L,R]
查询字符串将自动附加。如果要永久重定向,请将R
更改为R=301
。