当写入多个索引文件的规则时,无法在文件.htaccess中执行RewriteCond

vsnjm48y  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(83)

当我请求“http://domain/index.php”或“http://domain”时,我希望服务器给予我404代码。当我创建“http://domain/some-path/index.php”时,我希望服务器从“some-path”目录中给予我一个索引文件。但服务器在所有情况下都给予我404代码。在htaccsess文件中有我的代码。

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$线不能正常工作。

ac1kyiln

ac1kyiln1#

使用所显示的示例和尝试,请尝试以下.htaccess规则文件。

  • 请确保在测试URL之前清除浏览器缓存。
  • 另外,请确保将.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]

字符串

72qzrwbm

72qzrwbm2#

这是我的答案RewriteEngine On

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]

字符串

相关问题