.htaccess htaccess重写导致子目录中的文件变为404

.htaccess htaccess重写导致子目录中的文件变为404,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我的站点根目录中有一个.htaccess文件,其中包含以下重写规则,用于从URL末尾删除.html: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.html\ HTTP/ RewriteRule ^(.+)\.html$ http://example.com/$1 [R=302] Rew

我的站点根目录中有一个
.htaccess
文件,其中包含以下重写规则,用于从URL末尾删除
.html

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.html\ HTTP/
    RewriteRule ^(.+)\.html$ http://example.com/$1 [R=302]
    RewriteRule ^([a-z]+)$ /$1.html [L]
</IfModule>

重新启动发动机
重写基/
重写cond%{u请求}^[A-Z]{3,9}\/(.+)\.html\HTTP/
重写规则^(+)\.html$http://example.com/$1[R=302]
重写规则^([a-z]+)$/$1.html[L]
它适用于直接位于根目录下的所有页面(
example.com/page.html
),但404适用于一个目录深的页面(
example.com/dir/page.html
)。404页面在地址栏中的显示方式与我希望的完全相同(
example.com/dir/page

我已经确认该目录及其所有页面确实存在于正确的位置,并且正确命名。我还确认这段代码是404的罪魁祸首(如果我删除它,问题就会消失)


所以我一直在仔细检查这些规则,但我对正则表达式还不熟悉,很难理解这会导致子目录中的文件变成404。有人能帮我找出问题出在哪里吗?

问题出在您的模式上,您需要允许斜杠,以便它可以匹配子文件夹

    RewriteRule ^([a-z/]+)$ /$1.html [L]

正当我试图找出额外的
/
是否被计入时,你的答案突然出现了:)它起作用了。谢谢