是的,这里已经提到了很多,所提供的解决方案都没有为我工作。
文件夹结构
/
+-- _projects
| +-- includes
| | |-- main.class.php
| +-- scripts
| | |-- saveitems.php
| +-- view
| | |-- layout.php
| |-- index.php
| |-- .htaccess
|
+-- _pub
| +-- img
| | |-- webicon_facebook.png
| | |-- webicon_twitter.png
|
+-- view
+-- includes
|-- index.php
|-- .htaccess
root中的.htaccess文件:
Options -Indexes +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)\/(.+)$ index.php?page=$1&item=$2 [L,QSA]
RewriteRule ^([a-z]+)$ index.php?page=$1 [L,QSA]
任务: 允许浏览器访问 _pub
中的任何文件夹或文件我尝试了什么:
Satisfy Any
Allow from all
的.htaccess文件
的 _pub RewriteRule ^_pub/$ _pub/ [L]
RewriteBase \
内容
奇怪的是,当浏览到 _projects 时,访问该文件夹中的索引文件并从中完全加载网站。 但是当访问 _pub (没有索引文件)时,我从主机收到403错误。
我很确定我在root htaccess文件中遗漏了一些内容,允许直接访问 _pub 中的文件夹和文件,但我无法弄清楚是什么。
答案 0 :(得分:0)
如果目的索引是您的意图,那么您不应该使用Options -Indexes
来禁用目录索引,您应该使用Options +Indexes
。
答案 1 :(得分:0)
听起来您希望将_pub
视为例外:您不希望应用正常规则,并且您希望允许直接访问_pub
中的所有文件重写。如果不在.htaccess
中创建更多_pub
规则,有几种方法可以做到这一点。
一种方法是通过添加否定前瞻来更改DOCUMENT_ROOT
中已有的规则:
RewriteRule ^(?!_pub)([a-z]+)\/(.+)$ index.php?page=$1&item=$2 [L,QSA]
RewriteRule ^(?!_pub)([a-z]+)$ index.php?page=$1 [L,QSA]
试一试,不要更改你在问题中显示的RewriteConds。
答案 2 :(得分:0)
保持你的根.htaccess像这样:
Options +Indexes +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/_pub/ [NC,OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([a-z]+)/(.+)$ index.php?page=$1&item=$2 [L,QSA]
RewriteRule ^([a-z]+)/?$ index.php?page=$1 [L,QSA]