apache - .htaccess - www 到非 www & http 到 https & 包括斜杠
问题描述
我需要有关 .htaccess 文件的帮助。我希望有一个从 HTTP 到 HTTPS 以及从 www 到非 www 的 301 重定向,末尾带有斜杠。我无法从帖子中删除尾部斜杠,因为 WordPress 将它添加到 URL 的末尾,当我删除它时,我的所有帖子都返回 404 错误,并且某些插件不起作用。
我以如下结果结束:
- http://www.example.com/post -> https://example.com/post -> https://example.com/post/
- http://example.com/index.php -> https://example.com/index.php -> https://example.com/
我是这个论坛的新手,所以我不能添加超过 8 个链接,所以我制作了一个包含更多详细信息的屏幕截图。 在此处输入图像描述
当前的.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
有没有办法摆脱粗体部分只有一个 301 重定向?
解决方案
有这样的规则:
RewriteEngine On
# add a trailing slash with www removal and https
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule [^/]$ https://%1%{REQUEST_URI}/ [L,NE,R=301]
# handle www->non www, http->https
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
推荐阅读
- python - 在 matplotlib 中为补丁轮廓添加模糊?
- javascript - 自定义排序函数未调用 Jquery 数据表的 onLoad
- angular6 - checkAll 标题复选框的角度 6 prime ng 数据表工具提示
- api - 是否可以将 websockets 与体育 API 一起使用?
- vba - 使用 VBA 以特定格式转换日期/时间
- selenium - 使用量角器启动带有扩展名的 chrome
- asp.net - ASP.NET Core:字符串未被识别为有效的 DateTime 0:dd/MM/yyyy
- php - 在 Woocommerce 单品上的“添加到购物车”下方显示特定的运输类别
- vue.js - 如何在 Vue-CLI 3 中将预取和预加载资源插入到我的自定义 HTML 文件中?
- javascript - 带有多个选择器的 jQuery 后代选择器