将子域中的所有请求映射到不同的URL

时间:2017-05-04 12:12:07

标签: apache mod-rewrite

我有一台响应www.server.com/api

的服务器

我想让同一台服务器响应api.server.com

目前,我在我的vhosts文件中将api.server.com设置为www.server.com的别名,但我需要编写一条规则,使用api.server.com在所有请求中添加/ api域。

我试过这个:

RewriteEngine  on
  RewriteCond %{SERVER_NAME} api.server.com
  RewriteRule ^(.*)$ /api/$1 [L,R=301]

但无论哪种方式我玩这个,我因为循环条件而得到500.

1 个答案:

答案 0 :(得分:0)

根据您的描述,您想要实现外部重定向。而是尝试:

RewriteEngine  on
RewriteCond %{SERVER_NAME} ^api\.server\.com$
RewriteCond %{REQUEST_URI} !^/api
RewriteRule ^(.*)$ /api/$1 [L]

https://api.server.com/... /api/...处理所有请求,而不会在浏览器中重写可见网址。此外,会导致对/api/...的直接或内部请求进行无休止的重写循环。

如果您运行当前版本的apache http服务器,则可以使用L标志替换旧的END标志,这将阻止额外的重写迭代,从而节省时间和性能。