0

我将%{HTTP_HOST}在我的文件中做一些基本的工作,.htaccess并且想知道是否可以做类似的事情:

RewriteCond %{HTTP_HOST} ((foo|bar|baz).com)$
RewriteCond %{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI}  -d [OR]
RewriteCond %{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI}  -f
  RewriteRule %{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI} [L]

RewriteRule ^(.*)$ index.php?uri=$1 [QSA,L]

基本上,如果有人访问foo.com任何子域,我希望他们直接从该文件夹获得文件,但也有任何不针对特定文件的请求发送到我的index.php文件进行处理(这将执行路由)

我问的原因是因为我上面写的实际上不起作用,那么有没有办法做到这一点?(如果这应该有效,那么我的.htaccess文件的其余部分显然会出现问题,但在处理一个应用程序文件夹时一切正常)

另一种(混乱的 IMO)方法是将所有内容路由到文件夹并.htaccess为每个域创建第二个文件,但如果可以在一个文件中完成,我宁愿不这样做!

4

1 回答 1

0

您的第一个重写规则缺少正则表达式,这使您尝试匹配的重写引擎事物(作为正则表达式)%{DOCUMENT_ROOT}/apps/%1/webroot%{REQUEST_URI}并且您想将其重写为[L]. 我怀疑你希望它看起来像:

RewriteRule ^ /apps/%1/webroot%{REQUEST_URI} [L]

^匹配任何内容,因为您已经使用 3 个条件审查了请求。

现在您需要在最后一条规则中添加一些条件,这样它就不会盲目地应用于所有内容。你可能想要这样的东西:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?uri=$1 [QSA,L]
于 2012-08-31T15:32:22.090 回答