.htaccess - apache 2 .htaccess 不会重定向 www > non-www
问题描述
我的网站有问题,我无法让 apache 将我的网站重定向到非 www。例如 www.sqlinject.me 需要重定向到 sqlinject.me。
注意:我没有包含 http(s),因为我目前拥有的代码已成功将 http(s):www.sqlinject.me 重定向到 http(s)://sqlinject.me。
我需要它在没有 http(s) 的情况下重定向的原因是因为我的网站在 google 上被编入索引,但是如果你点击我的网站,它会将你带到 www.sqlinject.me,它不会重定向。
这是一些信息:
我正在托管:namecheap 我在运行 apache2 的树莓派上运行我的网站
这是我用于 www 重定向的 .htaccess 代码:
# Redirect www to non-www
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
这是整个 .htacces 代码(以防万一):
# Set home page to inject.php
DirectoryIndex inject.php
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# Remove .php from file extention
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
# Force redirect to https (just incase namecheap fails)
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# Return 404 if original request is .php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* - [L,R=404]
# Set error pages
ErrorDocument 404 /includes/error-pages/404
ErrorDocument 403 /includes/error-pages/403
ErrorDocument 500 /includes/error-pages/500
# Redirect www to non-www
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
解决方案
推荐阅读
- css - 在导航栏的中心对齐元素,除了一个(或多个)元素
- php - Laravel 发送电子邮件没有数据
- google-chrome - 在没有 SameSite=None 的情况下禁用 chrome 阻止 cookie
- node.js - 如何从查找表中仅选择几个值
- java - 如何修复 UnsatisfiedLinkError?
- angular - 将 sessionStorage 中的数据保存为角度未定义
- mysql - 在 SQL 中使用多列在 GROUP BY 中返回 0 个计数
- java - 2D JRadioButton 对象数组
- r - 横杆未按顺序排列
- db2 - DB2 选择组匹配条件,然后进行聚合 listagg