2010-06-11 194 views
2

我试图在Ubuntu/Apache2服务器的根文件夹中使用.htaccess,以便将子文件夹屏蔽到子文件夹,并且不断收到500内部错误。我知道我正在做一些愚蠢的错误,这是导致问题的一个愚蠢的错误。我已经检查了所有类似的在线和线上的线索,每当我尝试他们的建议500继续。使用htaccess重写子文件夹到子文件夹

这是我的代码。

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^admin\.mydomain\.com.*$ 
RewriteRule (.*) intranet/$1 [L] 

我想会发生什么,如果用户访问admin.mydomain.com他们将得到的文件夹admin.mydomain.com/intranet/但他们的地址栏的内容仍然会admin.mydomain。 COM。任何想法我做错了什么?

另外,一些线上线索谈到了这个系统可能存在的问题。这是做这个掩蔽的最好方法,我应该使用虚拟主机设置吗?

回答

2

重写规则应该工作,虽然我可能会写

RewriteEngine on 
RewriteBase/#omit if in a <Directory> or .htaccess 
RewriteCond %{HTTP_HOST} =admin.mydomain.com 
RewriteRule ^(?!intranet/).* intranet/$0 

现在,你可能要检查你的Apache的错误日志。它可能会告诉你错误是什么。我的猜测是你没有在httpd.conf中启用mod_rewrite。

+0

如果我做了apache2ctl -M,我在模块列表中看到了rewrite_module。当我检查apache2错误日志时,我得到“由于可能的配置错误,请求超过了10个内部重定向的限制。使用'LimitInternalRecursion'在必要时增加限制,使用'LogLevel debug'获得回溯。我是新来的这个服务器管理员的东西,所以任何想法都会有帮助吗? 另外,我注意到你改变了^ admin \ .mydomain \ .com。* $到=“admin.mydomain.com”,最新的区别是什么?与(。*)到。*和$ 1到$ 0相同......这些更改有什么作用? – 2010-06-11 17:19:18

+0

另外,我尝试了=“admin.mydomain.com”,它不会触发。我做了一个测试重定向RewriteRule。* http://www.mydomain.com,它不会触发=“admin.mydomain.com”,但它会与^ admin \ .mydomain \ .com。*一起使用$ – 2010-06-11 17:45:25

+0

@欧文艾伦好吧,我用反向预测修正了递归,并删除了域名引用。这应该工作。 “$ 0”是正则表达式的全局匹配。 – Artefacto 2010-06-11 19:00:24

相关问题