如何解决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 举报,一经查实,本站将立刻删除。