2014-03-12 69 views
1

我浪費了一整個上午試圖做一些非常簡單的事情。基本的htaccess重寫規則不起作用

我有一個本地服務器與WampServer建立。 httpd.conf中的重寫模塊爲ON。我想有像

http://localhost/wordpress/assets/whatever.jpg` 

http://localhost/wordpress/assets/test/whatever.jpg`. 

我已經嘗試了許多變化是愚蠢,我要麼得不到效果,或重定向循環,或服務器錯誤或消息說該文件不能在我不希望它找到的位置找到。這個版本怎麼樣,爲什麼不工作?

RewriteEngine on 

RewriteBase /wordpress/assets/ 
RewriteRule (.*) test/$1 

它會導致內部服務器錯誤。這一次得到相當接近,它得到的測試目錄,但不是JPG:

RewriteRule . test/ 

編輯:哦,我的意思是說,這個.htaccess文件是在資產的文件夾。我也嘗試了更高的東西。我認爲重寫不會發生,直到我找出RewriteBase的東西。

回答

0

您需要確保您尚未重寫test文件夾。重寫引擎會在第二次循環時再次被重寫。因此,像:

RewriteEngine on 

RewriteBase /wordpress/assets/ 
RewriteCond $1 !^test/ 
RewriteRule (.*) test/$1 

RewriteEngine on 

RewriteBase /wordpress/assets/ 
RewriteCond %{DOCUMENT_ROOT}/wordpress/assets/test/$1 -f 
RewriteRule (.*) test/$1 
+0

我不知道這是如何工作,但謝謝! – Moss

+0

@Moss第一次確保它不會重寫已經以「test」開頭的URI,以防止重寫爲諸如'/ wordpress/assets/test/test/image.jpg'之類的URI。等等。第二個首先檢查它重寫的是一個實際存在的文件,所以如果存在'/ wordpress/assets/test/image.jpg',它將重寫,否則它什麼也不做。副作用是,你會停止循環,並獲得404條消息,其中沒有說'test'。 –

+0

謝謝,我想這是有道理的。不幸的是,現在我再次嘗試了不同的服務器設置(Bitnami Wordpress而不是WampServer),現在它只顯示WP「未找到」頁面... – Moss