假設下面的目錄結構之外去,重寫規則 - 文檔根目錄
htdocs/
images/
css/
.htaccess
system/
index.php
...
我想航線通過PHP腳本的所有傳入的請求。我一直在htaccess中嘗試一些重寫規則,但我似乎無法路由到文檔根目錄之外的文件。我在apache手冊中找不到這個原因,所以最終使用了「包含」一個apache配置文件,其中規則是不同的。
在docroot之外有重寫的方法嗎?
假設下面的目錄結構之外去,重寫規則 - 文檔根目錄
htdocs/
images/
css/
.htaccess
system/
index.php
...
我想航線通過PHP腳本的所有傳入的請求。我一直在htaccess中嘗試一些重寫規則,但我似乎無法路由到文檔根目錄之外的文件。我在apache手冊中找不到這個原因,所以最終使用了「包含」一個apache配置文件,其中規則是不同的。
在docroot之外有重寫的方法嗎?
很多框架所做的工作是使用重寫將所有請求路由到一個文件,您可以在其中執行更復雜的路由。一個例子.htaccess文件可能是:
# ignore anything that's an actual file (eg CSS, js, images)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
# redirect all other traffic to the index page
RewriteRule ^.*$ index.php [L]
哪裏的index.php爲您的文檔根目錄(htdocs中/的index.php)內,從中你可以放心地包括系統/ index.php文件在適當情況下。
不,您不能在沒有潛在巨大風險的情況下在docroot之外進行路由。
您應該將index.php
放在htdocs
文件夾中,並在那裏重寫它,而不是在外面。如果您要重寫來處理索引,訪問docroot之外,並且您犯了一個小錯誤,那麼它有可能被任何黑客重寫請求字符串所利用。不漂亮!
在`index.php`中犯錯也很簡單。 – 2014-09-06 19:37:06
記得確保你不能包含任何基於查詢字符串的舊文件 - 否則人們可能會嘗試諸如/ etc/passwd或/etc/httpd/httpd.conf等 - 不好! – benlumley 2008-11-30 18:51:28