我知道这是一个非常高度讨论的主题,但我无法弄清楚我使用我的搜索技巧做错了什么。htaccess的子域名无法按预期方式工作
用下面的文件夹结构既是domain.local
的根和board.domain.local
/
app/
bin/
board/
index.php
src/
vendor/
web/
index.php
这的.htaccess在/
文件夹
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^board.domain.local$
RewriteRule ^(.*)$ board/$1 [QSA,L]
RewriteCond %{HTTP_HOST} ^domain.local$
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>
访问board.domain.local
当我得到一个内部服务器错误。访问domain.local
完美工作,并将查询重定向到web/
。
为什么第一次重写不起作用?
我会对此做一个稍微不同的解释:重写总是在URI上下文中完成,但是被修改为FS路径。如果您没有指定正确的RewriteBase来帮助引擎将URI映射到当前目录,那么引擎可能(并且经常)会错误地映射此映射。但除了一般问题陈述中的+1之外。这通常不是很好理解。 – TerryE 2012-03-12 23:21:12
[@Kaz。我是否会生气或者我刚刚对你的一个不存在的评论?]是的,我同意路径名被删除,然后重新应用,就像你从重写日志中看到的级别大于5的IIRC。但是这是一个伪URI,当它出错时,我有很多实例。所以(i)如你所说总是指定一个基地,并且(ii)在规则之后总是使用[L] - 我刚刚看到太多的情况,如果你不立即强制内部重定向。 – TerryE 2012-03-12 23:50:44
+1 Kaz很好的答案 – 2012-03-13 09:29:38