【问题标题】:Rewrite rule not trying to redirect重写规则不尝试重定向
【发布时间】:2011-09-27 12:44:27
【问题描述】:

我有这个 Apache 的 301 重定向规则:

RewriteEngine On

RewriteRule ^park.php?park_id=3       http://hiking.comehike.com/outdoors/parks/park.php?park_id=3 [R=301,L]

我正在尝试获取此网址:

http://www.comehike.com/outdoors/parks/park.php?park_id=3

重定向到这个网址:

http://hiking.comehike.com/outdoors/parks/park.php?park_id=3

但正如我现在所拥有的,它并没有尝试重定向。带有规则的 .htaccess 文件位于 /parks/ 目录中。

我做错了什么吗?看起来这应该相对简单。

谢谢!

【问题讨论】:

  • 您尝试过类似 ^.*park.php?park_id=3 的方法吗?即使您的 .htaccess 文件位于 parks 文件夹中,您的 URI 可能仍然是“outdoors/parks/park.php?park_id=3”。

标签: apache .htaccess redirect


【解决方案1】:

这是查询字符串;您需要添加一个条件才能接受它,例如:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^park_id=3$
RewriteRule ^park.php http://hiking.comehike.com/outdoors/parks/park.php?park_id=3 [R=301,L]

无论如何,当我将它添加到本地主机上的 .htaccess 时,它仍然有效。

最终可能会更好,因为它是 RegExp 模式匹配来执行以下操作:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^park_id=([0-9]+)$
RewriteRule ^park.php http://hiking.comehike.com/outdoors/parks/park.php?park_id=%1 [R=301,L]

这将获取地址末尾的整数并将其传递给新地址(当然,如果您在原始地址中没有查询字符串,实际上会更容易)。

【讨论】:

    猜你喜欢
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多