Apache 如何将根目录中的所有文件重定向到另一个目录?

Apache 如何将根目录中的所有文件重定向到另一个目录?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我已经找了一段时间了,但我找不到类似的东西。我有一个网站建设与不同的URL结构。有些URL来自根目录,有些URL有各种文件夹和路径。现在,我需要能够将所有路径从根目录重定向到另一个文件夹,但为来自其他文件夹的文件保留不同的结构 例如,此模式: /mypage应重定向到/anotherfolder/mypage/content.php /mysecondpage应该重定向到/anotherfolder/mysecondpage/content.php 在本例中,mypage和mysecondp

我已经找了一段时间了,但我找不到类似的东西。我有一个网站建设与不同的URL结构。有些URL来自根目录,有些URL有各种文件夹和路径。现在,我需要能够将所有路径从根目录重定向到另一个文件夹,但为来自其他文件夹的文件保留不同的结构

例如,此模式:

  • /mypage
    应重定向到
    /anotherfolder/mypage/content.php

  • /mysecondpage
    应该重定向到
    /anotherfolder/mysecondpage/content.php

在本例中,
mypage
mysecondpage
是要传递到目标的变量

但是,对于来自根目录中另一个文件夹的页面,我需要在目标位置使用另一种模式。例如:

  • /somerootfolder/somepage
    应该重定向到
    someotherfolder/somepage.php
在本例中,
somepage
是应该传递到目标的模式

第二种重定向不应改变第一种和第二种重定向

我对第一个指令(root中的任何文件,但只有root中的文件应该重定向到另一个文件夹)所做的是:

。。。其中,
$1
等于
(.*)
中的名称。它本身工作得很好,保留旧的URL,但从另一个文件夹获取内容

对于第二个指令(从一个文件夹到另一个文件夹的文件,保留名称并添加扩展名),我执行了以下操作:

。。。其中,
$1
等于
(.*)
。而
foldername
中的所有内容都保留其旧URL,但从另一个文件夹
获取内容


一切都是分开工作的,但不是一起工作的。有什么想法吗?

您的第二条规则与第一条规则中重写的URL相匹配,因此第二次被重写-格式错误,如
/anotherfolder/mypage/content.php.php
。如果不是因为第一条规则中的条件与
REDIRECT\u STATUS
环境变量相对应,您将有一个重写循环

您似乎可以通过使正则表达式更加具体来避免冲突(以及这两个规则的条件)——您只希望匹配根目录或子目录中的路径段,而不是所有内容

请尝试以下操作:

# Rewrite root files to another folder
RewriteRule ^([^/]+)$ /foldername/$1/content.php [L]

# Rewrite requests for /foldername/somepage to /anotherfolder
RewriteRule ^foldername/([^/]+)$ /anotherfolder/$1.php [L]
通过使正则表达式更具限制性,我们避免了冲突

RewriteRule ^foldername/(.*) /anotherfolder/$1.php [L]
# Rewrite root files to another folder
RewriteRule ^([^/]+)$ /foldername/$1/content.php [L]

# Rewrite requests for /foldername/somepage to /anotherfolder
RewriteRule ^foldername/([^/]+)$ /anotherfolder/$1.php [L]