我有以下目录结构:
root
folder1
foldera
file.php
folder2
folderb
index.php
.htaccess
我想将所有请求路由到index.php并将其应用于所有文件夹。这是我的.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
这似乎适用于localhost/root
。请求已正确路由到index.php。但对于localhost/root/folder1
或localhost/root/folder1/foldera/filephp
,它不起作用。我需要为此定义一个额外的规则吗?
答案 0 :(得分:1)
来自:https://httpd.apache.org/docs/current/howto/htaccess.html
.htaccess文件中的配置指令将应用于找到.htaccess文件的目录及其所有子目录。但是,重要的是还要记住,目录中可能存在.htaccess文件。指令按照找到的顺序应用。因此,特定目录中的.htaccess文件可能会覆盖在目录树中较高位置的.htaccess文件中找到的指令。反过来,那些可能已被覆盖的指令更高, 或者在主服务器配置文件中。
如果您的htaccess位于root中,为什么' ../'?目前它正在重定向到根目录上方的index.php。
如果您希望它适用于所有请求,请删除两个重写条件。现在它说:"仅当请求不是针对文件或存在的目录时重写请求"。
答案 1 :(得分:1)
如果您不希望其他文件夹中的文件可以直接访问,那么将它们完全移出Web根目录可能是有意义的。因此,您的前端控制器将位于Select A.*
From TableA A
Where Not Exists
(
Select 1
From TableJ J
Join TableB B On B.id = J.B_id
Where J.A_id = A.id
And B.Name = 'Suzie'
)
子目录中,而网络服务器的docroot将指向该目录。
web/