2014-10-27 67 views
1

我想加载private的网站的特定子域,而无需创建新的虚拟主机(不创建和重复所述虚拟主机配置)以下面的方式,:的Apache2:mod_rewrite的圆形rewritting

  • 的用户写入priv.mydomain.com
  • mod_rewrite追加/ priv到URL而不重定向。
  • Alias指令获取/私法和负载/ other_system_path /私人
  • private页面加载但用户看的URL没有变化。

我当前配置如下(适当的虚拟主机内):

Alias /priv /other_system_path/private 

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^priv\.mydomain\.com$ 
RewriteRule (.*) /priv [PT] 

PT标志是,如果我没有错,用于重复URL映射的过程中,这变成再次获得RewriteRule,因为priv.仍保留在URL中。

我该如何做到这一点?

+0

尝试添加'RewriteCond%{IS_SUBREQ} false' – Cheery 2014-10-27 22:07:13

+0

哇,它就像一个魅力。如果你知道的话,把它写成接受它的答案。有些解释是值得欢迎的。无论如何,我在浏览器中搜索“/ priv”。 – 2014-10-27 22:11:48

+0

'无论如何,我在浏览器中“/ priv”,但你不想看到它? – Cheery 2014-10-27 22:16:54

回答

1

的PT标志是,如果我没有错,对于重复URL 映射,它变成了被再次重写规则中的过程,因为 私法。留在URL

您可以通过添加下列条件

RewriteCond %{IS_SUBREQ} false 

根据手册

IS_SUBREQ跳过的子请求规则

包含文本“真“如果当前处理的请求是 是一个子请求,否则为”false“。子请求可能由 生成,模块需要解析其他文件或 中的URI才能完成其任务。

ps:你需要,因为我认为,RewriteRule ^/?(.*)$ /priv/$1 [PT],以便任何请求将被转换为正确的,而不仅仅是别名的'根'。