当为许多索引文件写入规则时,文件 .htaccess 中的 RewriteCond 不起作用

问题描述 投票:0回答:2

当我发出请求“http://domain/index.php”或此类“http://domain”时,我希望服务器给我404代码。当我制作“http://domain/some-path/index.php”时,我希望服务器从“some-path”目录中为我提供一个索引文件。但服务器在所有情况下都给我 404 代码。 htaccesss 文件中有我的代码。

RewriteEngine On

#RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{REQUEST_URI} ^/$ [OR]
RewriteCond %{REQUEST_URI} ^/index\.html$
RewriteRule ^ - [L,R=404]

RewriteCond %{REQUEST_URI} ^/some-path/?$
RewriteRule ^ - [L,R=403]

RewriteRule ^some-path\/(([^.]+\.(html|php))|(assets\/.*))$ /$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^some-path\/([^/.]+)$ $1.html [L]

看起来

RewriteCond %{REQUEST_URI} ^/index\.html$
线无法正常工作。

apache .htaccess
2个回答
1
投票

根据您显示的示例和尝试,请尝试遵循 .htaccess 规则文件。

  • 在测试您的网址之前,请确保清除浏览器缓存。
  • 还要确保将 .html 文件与 .htaccess 规则文件放在一起。
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/$ [OR]
RewriteCond %{REQUEST_URI} ^index\.html$
RewriteRule ^ - [L,R=404]

RewriteCond %{REQUEST_URI} ^/?some-path/?$
RewriteRule ^ - [L,R=403]

RewriteRule ^some-path\/(([^.]+\.(html|php))|(assets\/.*))$ /$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^some-path\/([^/.]+)$ $1.html [NC,L]

0
投票

这就是我的回答 重写引擎开启

RewriteCond %{THE_REQUEST} ^(?!.*(some-path|robots\.txt)).*$
RewriteRule ^ - [L,R=404]

RewriteCond %{REQUEST_URI} ^some-path/?$
RewriteRule ^ - [L,R=403]

RewriteRule ^some-path\/(([^.]+\.(html|php))|(assets\/.*))$ /$1 [L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^some-path\/([^/.]+)$ /$1.php [L]

RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^some-path\/([^/.]+)$ /$1.html [L]
© www.soinside.com 2019 - 2024. All rights reserved.