.htaccess 多次调用以配置网站不工作
试着让这两个人一起工作。我尝试了几种不同的方法来构造代码,但没有成功。我不确定我做错了什么,尽管答案似乎很基本 尝试重定向到SSL并删除.html.htaccess 多次调用以配置网站不工作,.htaccess,.htaccess,试着让这两个人一起工作。我尝试了几种不同的方法来构造代码,但没有成功。我不确定我做错了什么,尽管答案似乎很基本 尝试重定向到SSL并删除.html Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$
Options -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ https://www.website.com.au/$1 [R=301,L]
RewriteRule ^(.*)$ $1.html [NC, L]
看起来你正试图把规则混为一谈。这是两条独立的规则,应该保持完全独立
RewriteCond
指令仅适用于后面的第一条RewriteRule
。但您也不想从HTTP到HTTPS重定向中排除目录和.html
文件请求
检查.html
文件是否存在的条件不是严格正确的。根据请求的URL,这可能导致重写循环,因为您没有测试最终要重写的内容。请参阅以下服务器故障问题,该问题将对此进行更详细的说明:
.htaccess
文件中):
补充说明:
- 无需检查目录文件系统,除非您的目录也以
结尾.html
- regex
与(.*)
相同,因为默认情况下regex是贪婪的^(.*)$
- 无需反斜杠转义
TestString中的文字点,因为这不是正则表达式,点在这里没有特殊意义。例如,RewriteCond
-反斜杠在这里是多余的%{REQUEST\u FILENAME}\.html
- 您在
标志中有一个错误的空格,即重写规则
-这将导致500个错误响应(“无效标志”)。它应该是[NC,L]
[NC,L]
上的RewriteRule
标志是多余的,因为您正在匹配所有内容NC
Options -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ https://www.website.com.au/$1 [R=301,L]
RewriteRule ^(.*)$ $1.html [NC, L]
虽然最终目标是“删除.html
”——但这些指令专门将其添加回去(它们不会“删除”任何内容)。.html
扩展可能已在html源代码中删除