.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]
正当我试图找出额外的
/
是否被计入时,你的答案突然出现了:)它起作用了。谢谢