2012-08-01 158 views
0

您好,感謝您花時間瀏覽一下。mod_rewrite不允許訪問現有目錄

我在我的.htaccess中建立了創建seo友好的網址的規則。我使用mysql和php來填充index.php上的每個頁面上的內容。該規則設置爲涵蓋兩個級別的鏈接,例如。

mysite.com/first-level-link mysite.com/first-level-link/second-level-link

劇本目前在該網站的前端工作完全(所有網頁被重定向到index.php)。但我無法訪問位於服務器上的實際目錄中的站點的後端,路徑看起來像這樣 - mysite.com/admin/index.php

我已經包含兩條規則/條件,它們應該如果它們存在,則忽略目錄和文件。我將包括下面的代碼:

Options +SymLinksIfOwnerMatch 

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L] 

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

RewriteRule ^(.*)$ index.php?page=$1 
RewriteRule ^.*/(.*)$ index.php?page=$1 

回答

1

!-f!-d條件僅適用於下一RewriteRule,所以你的第二個規則沒有依賴於它的任何條件。您還需要複製該規則的條件。另一個問題是第二條規則被第一條規則取代。由於/some/path匹配^(.*)$之前它有機會匹配^.*/(.*)$,因此您需要將它們交換。

所以所有規則(從RewriteEngine on起)看起來像:

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^.*/(.*)$ index.php?page=$1 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?page=$1 
相關問題