2016-12-27 116 views
1

我有一個文件結構,其中我有一個名爲Fort的父目錄中的.htaccess文件。在同一個目錄中,我有一個名爲public的文件夾。我在public目錄中有一個bootstrap.php腳本。.htaccess重寫根目錄被禁止

這裏是我的.htaccess代碼:

RewriteEngine On 

RewriteBase /Fort 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.+)$ bootstrap.php?url=$1 [QSA,L] 

我使用甲基苯丙胺和默認網址設置爲localhost:8888/Fort/

bootstrap.php腳本有這樣的代碼:

<?php 

echo $_GET['url']; 

出於某種原因,當我通過一個URL說localhost:8888/Fort/foo/bar,我bootstrap.php腳本返回網址爲foo/bar。但是,如果我通過網址localhost:8888/Fort/,我得到一個403 Forbidden錯誤,並且bootstrap.php腳本未加載。

回答

3

好問題!感謝所有的信息。

更改最後一行是:

RewriteRule ^(.*)$ bootstrap.php?url=$1 [QSA,L] 

當您訪問/Fort/有一個空字符串重寫匹配,和你匹配+這意味着一個或多個字符,當有事實沒有字符,所以它沒有被觸發。更改爲*表示解決問題的零個或多個字符,現在按預期匹配/Fort/

+0

現在,當我使用該代碼沒有錯誤,而是我只是得到常規的Apache目錄根。我該如何解決這個問題,以便我的'bootstrap.php'腳本可以回顯出事情? –

+0

嘗試刪除行'RewriteCond%{REQUEST_FILENAME}!-d'。並請接受我的答案,因爲它解決了您詢問的錯誤。 – SuperDuperApps

+0

@ user249325修復它!謝謝! –