1

假设我有一个名为:www.example.com/today.php?id=123的域名。我使用以下代码将其重定向到网址www.example.com/yes/123/some-name :

Rewrite Rule ^yes/123/some-name$ today.php?id=123

但是现在我想让该链接在从 https 调用时始终重定向到 http。因此,我通过添加尝试了以下代码:

RewriteCond %{HTTPS} on
Rewrite Rule ^today\.php(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]

发生的情况是它被重定向到 http 但使用以下 url:www.example.com/today.php?id=123 而不是保留原始的 www.example.com/yes/123/some-name。我究竟做错了什么?

谢谢!

4

2 回答 2

4

更改规则顺序:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule ^yes/[^/]+/.*$ http://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R=301]

RewriteRule ^yes/[^/]+/.*$ today.php?id=123 [L,QSA,NC]

一般来说,在重写规则之前保留你的 301 规则。

于 2013-11-06T19:47:39.820 回答
0

您需要确保您的重定向在内部路由规则之前。您需要匹配清理后的 URL 而不是内部映射的 URL。所以像:

RewriteCond %{HTTPS} on
RewriteRule ^yes/[0-9]+/ http://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R]

RewriteRule ^yes/123/some-name$ today.php?id=123 [L]
于 2013-11-06T19:47:54.927 回答