我想要的是什么:
保护所有文件/文件夹,但保护index.php。
的Apache:
我的项目结构
网址:“http:// localhost / MyProject /”
PROJECT_DIRECTORY C:/ xampp / htdocs / MyProject /
项目目录如下:
问题:
我的.htaccess文件遇到麻烦,因为我总是收到403甚至500错误。
我尝试了不同的设置来实现目标,但这些都没有奏效。我尝试过Directory,DirectoryMatch,Files,FilesMatch等。
但我认为它应该如此简单:
# Activate rewrite engine
RewriteEngine on
RewriteBase /
# Redirect all requests to index.php
RewriteRule ^(.*)$ index\.php?/$1 [QSA]
# Deny from all
Order deny,allow
Deny from all
# Allow only index.php
<Files "index.php">
Allow from all
</Files>
或类似的东西:
...
# Deny from all
<Directory />
Order deny,allow
Deny from all
</Directory>
# Allow only root dir
<Directory "/MyProject" />
Allow from all
</Directory>
愿有人能帮助我吗?
编辑:我最近发现,我无法使用标签,因为.htaccess对我放入的目录有效,因此无需在.htaccess中定义该目录。这并没有解决我的问题,但我知道第二个例子是错误的。
答案 0 :(得分:1)
你可以试试这个:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(index\.php)$
RewriteRule ^ - [L,F]
这将允许/
和/index.php
的请求通过403 Forbidden响应任何其他内容。
但是,你已经有了这条规则:
# Redirect all requests to index.php
RewriteRule ^(.*)$ index\.php?/$1 [QSA]
因此,如果所有内容都已通过index.php
进行路由,那么您真的不需要拒绝任何内容