Apache将管理子域重写到子目录

Apache将管理子域重写到子目录,apache,mod-rewrite,Apache,Mod Rewrite,对不起,如果这是一个重复的问题,但我一直在尝试其他问题的各种建议,显然没有运气。我只是想建立一个admin.domain.com/everything/else/子域,它将(在内部)重写为domain.com/admin/everything/else,这样我就可以建立一个A-NAME DNS记录,以确保管理区域由单个服务器提供服务。这个规则对于任何子域都不应该是动态的-我只需要它作为“admin” 我的.htaccess中已经有以下重写规则,这需要与之配合使用: RewriteEngine O

对不起,如果这是一个重复的问题,但我一直在尝试其他问题的各种建议,显然没有运气。我只是想建立一个
admin.domain.com/everything/else/
子域,它将(在内部)重写为
domain.com/admin/everything/else
,这样我就可以建立一个A-NAME DNS记录,以确保管理区域由单个服务器提供服务。这个规则对于任何子域都不应该是动态的-我只需要它作为“admin”

我的.htaccess中已经有以下重写规则,这需要与之配合使用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
之后我可以添加更多的规则吗?我尝试在上述规则之后添加以下内容,但我坦率地承认,我不知道自己在做什么

RewriteCond %{HTTP_HOST} admin\.[a-z]+\.[a-z]+
RewriteRule ^(.+)$ /admin/$1 [L]
这导致目前出现500个内部服务器错误。有人能帮忙吗?

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST}  ^(www\.)?admin\.domain\.com   [NC]
RewriteRule  ^(.*)/?$   http://domain.com/admin/$1  [L]
无声地映射

http://admin.domain.com/everything/else/

http://www.admin.domain.com/everything/else/

致:

http://domain.com/admin/everything/else


对于永久和可见的重定向,请将
[L]
替换为
[R=301,L]

抱歉,这似乎对我不起作用。我把它放在我提到的另一个重写规则之后,但它们似乎不在一起工作。e、 g.如果我转到
http://admin.domain.local/bundle/story/story/list
我最终被重定向到
http://domain.local/admin/app.php
,这不起作用,因为“/admin”应该在“app.php”之后,这意味着我的答案中的规则集正在按预期重定向。问题是
app.php
规则没有向脚本传递任何内容,只传递任何传入的查询。因此,即使我的答案中的规则集放在另一个规则之前,替换URL也将是
http://domain.local/app.php
,仅此而已。由于
app.php
规则的实现方式,没有传递任何参数,也没有
/admin文件夹
。这可能不是您想要的,除非修改该规则。但是,那么,你可能不得不面对其他问题。