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

Apache 重定向用于在末尾添加缺少的 .html

如何解决Apache 重定向用于在末尾添加缺少的 .html

我想将最后一段不包含点的任何请求重定向到 .html

示例:

/travels/
/travels.html
/travels/categories/new-zealand
/travels/categories/main.js

第 2 行和第 4 行不应重定向,而第 1 行和第 3 行应重定向到:

/travels.html
/travels/categories/new-zealand.html

我已经有了这个似乎适用于捕获的正则表达式:^(https?:\/\/.+(\..+)*\/)?[^\s.]+$

我如何准确地进行这种重定向我有一个带有 apache werbserver 的虚拟服务器正在运行并且启用了 mod_rewrite。重写语句究竟会是什么样子,我应该把它放在哪里?如果我把它放在一个 .htaccess 文件中,我把它放在哪里?在页面的根目录内或任何地方?

解决方法

您不能匹配规则模式中的主机和 https 标头。您只能匹配 RewriteRule 中的 URL 路径。要检查主机和 https 标头,您需要使用 RewriteConds

 RewriteEngine on
# URL scheme is HTTPS
 RewriteCond %{HTTPS} on
# Host is www.example.com or example.com
 RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
#URL path is /travels/ then redirect the request to /travels.html
 RewriteRule ^/?travels/$ /travels.html [R,L]

这将重定向 https://example.com/travels/https://example.com/travels.html 。这会将浏览器中的网址从旧网址更改为新网址,如果您希望重定向在内部发生,则只需删除 R 标志。

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