2014-03-12 68 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