当我发出请求“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$
线无法正常工作。
根据您显示的示例和尝试,请尝试遵循 .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]
这就是我的回答 重写引擎开启
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]