在一个根目录中使用多个域时,在多个子文件夹中重写相同的文件

时间:2012-08-31 19:50:13

标签: .htaccess mod-rewrite rewrite

我真的不知道如何在句子中描述我的问题,所以我将用一个例子来解释:

假设我有一个如下所示的文件夹结构:

  

/根

     

/root/clientfolder1/testfile.php

     

/root/clientfolder2/testfile.php

等...

并且testfile.php在所有子文件夹中都是相同的。

现在说我只是在所有子文件夹中推出了一个名为testfile2.php的新文件,所以现在testfile2.php存在于所有子文件夹中。

我添加了一个重定向,将旧的testfile.php指向新的testfile2.php

所以,在我的.htaccess中我添加了以下内容(是的,'RewriteEngine On'已在.htaccess文件中设置):

RewriteRule (.*)/testfile\.php /$1/testfile2.php [R=301,L]

好吧现在一切似乎都运行正常但是(这就是事情变得棘手)我的htaccess文件中我还有多个域的规则设置指向这样的特定文件夹:

RewriteCond %{HTTP_HOST} domain-one.com
RewriteCond %{REQUEST_URI} !^/clientfolder1
RewriteRule ^(.*)$ clientfolder1/$1 [L]

RewriteCond %{HTTP_HOST} domain-two.com
RewriteCond %{REQUEST_URI} !^clientfolder2
RewriteRule ^(.*)$ clientfolder2/$1 [L]

等...

我还有一个主(默认域名)用于我的主站点(root文件),我们称之为main-domain.com

以下是有效的:

domain-one.com/testfile.php
domain-one.com/testfile2.php
domain-two.com/testfile.php
domain-two.com/testfile2.php
main-domain.com/clientfolder1/testfile.php
main-domain.com/clientfolder2/testfile.php

现在这是我的问题/问题:

我在上面添加的新重定向用testfile2.php替换testfile.php会导致以下情况发生:

domain-one.com/testfile.php 重定向到:  的 main-domain.com/clientfolder1/testfile2.php

但是我需要它重定向到 domain-one.com/testfile2.php

我无法让这个工作......并且感到沮丧,因为我确信有一个简单的解决方案,我只是遗漏了一些明显的东西。可以这样做吗?

提前感谢您的帮助 - 非常感谢!!

1 个答案:

答案 0 :(得分:1)

Apache完全遵循规则要求它做的事情。

RewriteCond %{HTTP_HOST} domain-one.com

如果域名是“domain-one.com”......

RewriteCond %{REQUEST_URI} !^/clientfolder1

...而URI 以“/ clientfolder1”开头......

RewriteRule ^(.*)$ clientfolder1/$1 [L]

...然后使用“clientfolder1 /".

预先添加URI