.htaccess 多次调用以配置网站不工作

.htaccess 多次调用以配置网站不工作,.htaccess,.htaccess,试着让这两个人一起工作。我尝试了几种不同的方法来构造代码,但没有成功。我不确定我做错了什么,尽管答案似乎很基本 尝试重定向到SSL并删除.html Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$

试着让这两个人一起工作。我尝试了几种不同的方法来构造代码,但没有成功。我不确定我做错了什么,尽管答案似乎很基本

尝试重定向到SSL并删除.html

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是贪婪的
  • 无需反斜杠转义
    RewriteCond
    TestString中的文字点,因为这不是正则表达式,点在这里没有特殊意义。例如,
    %{REQUEST\u FILENAME}\.html
    -反斜杠在这里是多余的
  • 您在
    重写规则
    标志中有一个错误的空格,即
    [NC,L]
    -这将导致500个错误响应(“无效标志”)。它应该是
    [NC,L]
  • RewriteRule
    上的
    NC
    标志是多余的,因为您正在匹配所有内容
旁白:

。。。并删除.html

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源代码中删除