0

我有一个如下网址。

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 重定向到移动版本的问题。但不是这样。任何帮助将不胜感激。谢谢。

4

3 回答 3

1

我从ulrich palha那里找到了一个类似的答案,这可能会有所帮助。 root 的 .htaccess 文件中的问题 id 9113747 你可以试试这个:

RewriteEngine on
RewriteBase /

RewriteCond %{QUERY_STRING} (^|&)listingid= [NC] 
RewriteRule ^ mobile-listing [L,R=301]

希望这会有所帮助。您可能会有所改变,这应该指向解决方案的正确方向。

于 2013-06-25T06:58:26.327 回答
1

您需要使用RewriteRule指令QSA标志PT

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

标志

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

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

更多信息

您可以在Redirecting and Remapping with mod_rewrite找到更多场景。

于 2013-06-25T07:05:20.423 回答
0

如果没有任何类型的移动或非移动条件,并且您总是重定向,那么规则将如下所示:

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

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

于 2013-06-25T06:59:51.800 回答