首页 > 解决方案 > .htaccess 重定向以删除 php 并重定向到 https 和非 www

问题描述

我的.htaccess文件中有以下内容

这是我的 .htaccess:

# ----------------------------------------------------------------------
# | Redirect to HTTPS & remove www                                     |
# ----------------------------------------------------------------------
<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] 

# ----------------------------------------------------------------------
# | Remove .php extension                                              |
# ----------------------------------------------------------------------
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

当我在 Firefox 中查看该站点时,出现以下错误:

页面未正确重定向。此问题有时可能是由禁用或拒绝接受 cookie 引起的

Chrome 警告重定向过多

URL 已更新为我所期望的(删除了 www 并添加了 https)。没有其他有效的重定向

谁能发现我哪里出错了?

标签: .htaccess

解决方案


在您的 .htaccess 文件中尝试以下代码:

RewritEengine on
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [r=301,nc]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

推荐阅读