首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通配符子域路径问题

问通配符子域路径问题
EN

Stack Overflow用户
提问于 2011-01-25 02:31:38
回答 2查看 628关注 0票数 3

我有一个通配符子域的htaccess重写,它将foo.domain.com重写为domain.com/index.php?id=foo。这是使用以下命令完成的:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} ^((www\.)?([a-z]+)\.)domain\.com [NC]
RewriteRule .? index.php?id=%3 [L]

这可以正常工作,但网站上的所有内容都引用根目录,例如:

代码语言:javascript
复制
 "/content/imgs/logo.jpg" or "/ajax/upload.php"

通配符子域会更改根目录,所有内容都会被引用:

代码语言:javascript
复制
"http://foo.domain.com/content/imgs/logo.jpg"

并且找不到内容,因为它不在这个子域上。

我知道您可以使用html < base >标记在所有href位置上放置前缀,但这对ajax请求的javascript没有帮助。

在htaccess中有什么可以解决这个问题的方法吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-26 22:46:10

我想我可能有解决你问题的办法了!

您的重写条件正应用于所有包含的内容,如ass css/js/images等。这意味着它试图将此内容重写为index.php?id=%3而不是style.css。

通过在条件上方添加行RewriteCond %{REQUEST_FILENAME} !-f并将整个条件放在htaccess的底部,意味着它将仅应用于不存在的文件/目录(即,仅适用于通配符子域)。

尝试以下操作:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} ^((www\.)?([a-z]+)\.)domain\.com [NC]
RewriteRule ^(.*)$ "http://domain.com/index.php?id=%3" [L,P]

希望这能帮助你交配!

W。

票数 1
EN

Stack Overflow用户

发布于 2011-01-25 04:32:38

好的,现在有一个问题,你没有在你的重写规则中指定目标域。如果来自除www以外任何子域的所有请求都需要重定向,则应指定如下内容:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} ^((www\.)?([a-z]+)\.)domain\.com [NC]
RewriteRule .? http://www.domain.com/index.php?id=%3 [L]

这样做的另一个问题是忽略了foo.domain.com之后的文件路径,这样所有请求都会被重定向到域/index.php?id=foo,而不管请求的文件是页面还是图像。

一种更好的方法可能是给每个“子域”分配自己的文件夹,例如

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} ^((www\.)?([a-z]+)\.)domain\.com [NC]
RewriteRule ^(.*)? http://www.domain.com/%3/$1 [L]

因此,像foo.domain.com/content/imgs/logo.jpg这样的路径将指向domain.com/foo/content/imgs/logo.jpg

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4785658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档