2012-07-31 12 views
0

您好,我有一個mod_rewrite腳本爲我建立的個人網站上的友好的網址。這個腳本很棒,直到我注意到我無法理解我的admin文件夾是服務器上的一個真實目錄。在我做第一次改變之前,.htacsess看起來像這樣。國防部重寫不顯示第二級鏈接上的內容


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 

所以我修改劇本,增加了第二組的這兩個規則:!

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

直接在最後一個規則之前,所以它看起來像這樣沒有前4行代碼:

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 

一旦我這樣做,我能夠_1的存取admin目錄,但現在,所以它看起來像最後一個規則被忽略的內容不會在二級鏈接顯示。

任何人都可以幫助我看到我在做什麼錯我會非常感激。

瑞恩·鮑爾

回答

1

你應該不需要第二條規則。如果你真的想要它的工作,它應該是 RewriteRule ^(.*)/(.*)$ index.php?page=$1/$2,因爲第二個(.*)不是$1的一部分。

+0

感謝您的及時回覆。你是否說我刪除了最後三條規則,並用你列出的新規則替換它,因爲通配符應該覆蓋二級鏈接? – 2012-07-31 23:34:32

+0

我在說你應該只需要前四條規則,直至包括'RewriteRule ^(。*)$ index.php?page = $ 1'。但是,如果這不起作用,請保留所有*規則,並用'RewriteRule ^(。*)/(。*)$ index.php?page = $ 1/$ 2'替換最後一條規則。換句話說,在'$ 1'後面加上'/ $ 2'到最後一個規則。 – dririan 2012-07-31 23:37:21

+0

謝謝你,當我試着做你說的話,包括添加/ $ 2服務器不能再顯示第一級鏈接時,第二級鏈接仍然顯示頁面,但是數據庫中的內容沒有顯示。這是有點奇怪,因爲頁面顯示所有的CSS唯一不顯示的是從服務器拉的內容 – 2012-07-31 23:55:09