使用mod_rewrite(.htaccess)来限制不同子域的URI

时间:2014-01-21 21:05:55

标签: apache .htaccess codeigniter mod-rewrite

我在拥有多个域和子域的Apache服务器上有一个网站。我想继续将请求重定向到最域优选域,但现在我还希望以分离出一对夫妇的URI,要求使用新的子域,如下所述。

我们已根据网站上的资源/media/api,我想 “招” 关www.domain.com和{上{1}}和static.domain.com。 (主要原因是消除静态资源的cookie流量。)Web服务器上的实际路径不会改变。

要复杂的事情,我想继续允许访问的主域为api.domain.com,但在/media,这是全新的,我只希望允许通过1存取{{什么}}。其他一切都应该返回404。

编辑:

基于Jon的答案

下面,添加以下块以限制/api子域包含的URI api.domain.com

api

但是,我似乎无法做相反的事情,并阻止所有其他子域访问/api/ URI。以下块似乎没有效果。

#Restrict api subdomain to /api
RewriteCond %{HTTP_HOST} ^api\. [NC]
RewriteRule !^api/.*$ - [R=404,L]

在修复此块时,我们非常感谢帮助。

编辑2:

当前的ModRewrite代码位于服务器的文档中的.htaccess中。 httpd.conf中没有其他.htaccess文件和没有ModRewrite配置。我怀疑我上面(不允许/ API)第二个问题在于这样一个事实,一切都最终通过的index.php路由到笨。

/api/

1 个答案:

答案 0 :(得分:1)

添加以上规则:

RewriteCond %{HTTP_HOST} !^static\.domain\.com$ [NC]
RewriteRule ^media/(.*)$ http://static.domain.com/media/$1 [R=301,L]

RewriteCond %{HTTP_HOST} !^api\.domain\.com$ [NC]
RewriteRule ^api/(.*)$ http://api.domain.com/api/$1 [R=301,L]