2010-09-21 76 views
0

我在godaddy托管的两个htaccess文件有问题。我在同一个托管多个域,因此我USEN htaccess的,我发现,哪些是伟大的工作:htaccess重写错误

RewriteEngine On 
RewriteBase/

# To redirect www.site1.com to /site1/ 
RewriteCond %{REQUEST_URI} !^/site1/ 
RewriteCond %{HTTP_HOST} ^(www\.)?site1\.www\. 
RewriteRule ^(.*)$ site1/$1 [L] 

这是伟大的,因为它重定向谁去是site1.com到/ site1的/我有页为该目录中的site1。事实上,我有这三个其他域名,他们工作得很好(该文件夹隐藏在网址栏中)。

我的问题是,我添加了一个新的域(site2.com),这是一个Zend应用程序。因此它有它自己的htaccess来重写url(用于以更好的方式在url中传递参数)。对于这一个它不起作用。事实上,我被重定向回到/,并且我得到了一个没有人应该能够获得的/index.html页面。只是要注意:在Zend应用程序的根目录是 'WWW':

第二htacess,内/ SITE2/www是

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

我不知道这是怎么回事了。 htaccess命令不是相对路径吗?为什么它回到两个级别(请记住它在/ site2/www和我得到的文件是在/index.php(测试))

回答

0

它不是相对它尊重你从上层RewriteBase其中/ ...只要把 htaccess的下站点2

RewriteBase /site2/ 
+0

其实我有这竟然是一个在这种情况下另一个错误:在第二的RewriteCond第一htaccess文件指向www \。这是因为zend公共网站的www文件夹而添加的。这是错误的(我不完全知道如何以及为什么),但是这个规则没有被应用,这就是为什么我在/上得到索引。 www将被添加到RewriteRule中。修复它:)谢谢无论如何。 – 2010-09-22 18:43:42