微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

两个 URL 的 Apache RewriteRule

如何解决两个 URL 的 Apache RewriteRule

我正在尝试重定向以下两个 URL:

https://www.example.com/blog/content/Das.com
https://www.example.com/blog/content/page/2

致:

https://www.example.com/blog/content

使用:

RewriteEngine on
RewriteRule (blog/content/Das.com|blog/content/page/2) /blog/content [L,R=301]

但它不起作用。我做错了什么?

解决方法

您确定要将不同的请求网址重定向到同一个目标网址吗?这意味着您将丢失最初请求的 URL 的信息。所以你不能再区分这两个请求了。如果您实际上只想在内部重写这些 URL,以便它们可以由同一个控制器处理,那么只需删除下面的 R=301 标志...

我个人建议实施两个单独的规则。代码的可读性非常重要,即使对于没有编写代码的人,也应该可以立即了解代码的作用:

RewriteEngine on
RewriteRule ^/?blog/content/Das\.com$ /blog/content [R=301,END]
RewriteRule ^/?blog/content/page/2$ /blog/content [R=301,END]

但如果您更喜欢单一规则,您当然可以将其结合起来:

RewriteEngine on
RewriteRule ^/?blog/content/(?:Das\.com|page/)$ /blog/content [R=301,END]

为此,重写模块显然需要加载到 http 服务器中。您应该更喜欢在实际的 http 服务器的主机配置中实现此类规则。您可以使用分布式配置文件(“.htaccess”),以防您无法控制正常配置,但这会带来性能损失。显然也需要先启用。在这种情况下,您需要将该文件放在 DOCUMENT_ROOT 的顶部文件夹中。

一般来说,最好从 R=302 临时重定向开始,并在确定一切按预期工作后才将其更改为 R=301 永久重定向。这可以防止恼人的缓存问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。