我刚刚将我的网站从HTTP升级到了HTTPS,之前完美运行的.htaccess现在表现得很奇怪。我在那里有以下内容:
......加上其他人,但我想这些都是有问题的。
我在一个示例页面上获得的行为是:
我错过了一些明显的东西吗?代码是:
justifyContent
答案 0 :(得分:0)
对于此特定问题,用于删除尾随/
和.php
扩展名的重写规则不应在替换中使用完整的URL。您也可以考虑重新安排其中一些规则。
更新示例:
Require all granted
DirectoryIndex index.php
# Secure text files
<Files ~ "\.txt$">
Require all denied
</Files>
ErrorDocument 404 /404.php
RewriteEngine On
# Redirect HTTP to HTTPS and non-www to www
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,R=301,L]
# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [NC,L]
这里有几点需要注意:
RewriteEngine on
指令应该在其他重写规则之前HTTP -> HTTPS
和non-www -> www
重定向逻辑可以在一次操作中完成如果您需要有关此处使用的某些语法的更多信息,可以查看mod_rewrite
文档。