2

我有一个用于运行多个站点的托管帐户 masterhost.com。在 masterhost.com 下,我有 site1.com、site2.com 等......并且正在使用 masterhost 目录中的这段代码将域请求从 masterhost 目录重新路由到 site1 目录。

RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteCond %{REQUEST_URI} !^/site1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site1/$1/
RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteRule ^(/)?$ site1/index.php

然而,site1.com 上的 Joomla 对此存在一些问题,并将默认图像路径路由回 masterhost.com/images。

我可以使用重写来识别任何请求http://www.site1.com/images并将其写入http://www.masterhost.com/site1/images吗?

4

1 回答 1

0

我相信问题出在这两行:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

基本上,如果图像存在于 mainsite.com,这些规则将阻止请求被重定向到 site1。因此,例如,如果您有 mainsite.com/img/logo.png 和 site1.com/img/logo.png,site1.com 将显示 mainsite.com 的徽标。

此外,使用此规则:

RewriteRule ^(.*)$ /site1/$1/

我不相信结尾的斜杠应该在那里。

最后,你没有问,但最后一条规则可能也不起作用?如果是这样,删除上面的 !-f 和 !-d 检查会破坏它。这是因为如果用户请求 site1.com/,第一条规则会将其重定向到 /site1/,而后者永远不会匹配该规则^(/)?$。因此,该规则需要更改为:

RewriteRule ^site1(/)?$ site1/index.php

您可能需要也可能不需要该规则中的 ^ 和 site1 之间的斜杠,具体取决于您的 RewriteBase 指令。

于 2012-12-12T13:27:36.463 回答