2017-07-06 28 views
0

我有這個.htaccess化妝的.htaccess防止導航到目錄

DirectorySlash On 
RewriteEngine On 

RewriteRule /?\.htaccess$ - [F,L] 

# Remove trailing slash 
RewriteRule ^(.*)/$ /project/$1 [R,L] 

# Map every link to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/project/index.php.*$ 
RewriteRule ^(.*)$ /project/index.php?___MYROUTER=$1 [QSA,END] 

,但是當我瀏覽到一個目錄中我旁邊的.htaccess文件中像css在瀏覽器中的文件夾,利用該地址:

http://localhost/project/css

那麼我的地址將改爲:

http://localhost/project/css?___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css

,並在Firefox是這樣的結果:

的網頁沒有正確重定向

的Firefox已經檢測到服務器重定向對 請求這個地址的方式永遠不會完成。

This problem can sometimes be caused by disabling or refusing to accept cookies. 

,但這些都沒有指向現有的目錄其他地址,會確定這樣的:

http://localhost/project/mycontroller

這個地址是確定的,並不會改變任何東西否則

我的有什麼問題?

這是我的log文件

回答

0

這是因爲Apache是​​在目錄中的前mod_dir模塊已經完成執行後增加一個尾部斜槓。

您可以使用單獨的規則自行在目錄前面添加尾部斜線。

DirectorySlash On 
RewriteEngine On 

RewriteRule /?\.htaccess$ - [F,L] 

# Remove trailing slash for non directories 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /project/$1 [R,L] 

# add a trailing slash to directories 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE] 


# Map every link to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/project/index\.php [NC] 
RewriteRule ^(.*)$ project/index.php?___MYROUTER=$1 [QSA,END] 
+0

你測試了嗎?我已經測試過它,但它不能正常工作。目錄問題已消失,但對於目錄「address?___ MYROUTE =/css」仍然顯示,我希望此參數被隱藏 – Omid

+0

清除瀏覽器緩存後嘗試更新我的答案。 – anubhava

+0

如果您可以通過TeamViwer來參觀我的apache,我該如何直接與您聯繫?請從這裏節省我:-(這是我的電報ID http://t.me/omidgfx – Omid