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