php – .htaccess with -Indexes在给定目录时会进入无限重定向循环

这是我的.htaccess文件:

# NO LISTING OF INDEXES
Options -Indexes

<IfModule mod_rewrite.c>
  RewriteEngine On

  # NIX THE www BECAUSE IT IS NO LONGER 1996 AND YOU'RE COOLER THAN THAT
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$[NC]
  RewriteRule ^(.*)/$http://%1/$1 [R=301,L]

  # NIX TRAILING SLASHES BECAUSE SEO IS A VENGEFUL GOD AND WHATNOT
  RewriteRule ^(.*)/$$1 [R=301,L]

  # SEND ALL NON-FILE REQUESTS TO index.php FOR FIGURING OUT
  RewriteBase /
  RewriteRule ^index\.php$- [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>

# ERROR DOCS
ErrorDocument 400 /error/400
ErrorDocument 401 /error/401
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
ErrorDocument 500 /error/500

如果我尝试访问文件夹(/ images /或/ images或我的站点结构中的其他一些真实文件夹),它将进入重定向循环.

我尝试在尾部斜杠规则之前添加RewriteCond%{REQUEST_FILENAME}!-d,并且“修复”重定向,直到它现在强制执行适当文件夹上的尾部斜杠 – 但也将文件夹名称传递给我的脚本,就好像它一样是一个烘焙的URI查询,我的CMS要弄明白.

我想我现在可以通过检查URI是否是某个人试图非法列出的文件夹来尝试在CMS端修复此问题,但理想情况下会有一个优雅的.htaccess解决方案来将文件夹列表调用重定向到其中一个禁止页面我非常有帮助地在那里宣布.有谁知道吗?

最佳答案 不确定它是否会产生影响但我通常在任何条件规则之前从顶部开始

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

您的重写基础稍后开始.也许举起来吧.

点赞