【发布时间】:2016-07-18 23:01:00
【问题描述】:
我有一个托管在 GitHub Pages (http://user.github.io/repo/) 上的静态页面和一个托管的注册域 (mydom.com)。
我想在mydom.com 上设置.htaccess,所以所有请求都通过代理重定向到GitHub 页面(在地址栏中保留mydom.com)。首先我尝试了:
RewriteCond %{HTTP_HOST} mydom\.com$ [NC]
RewriteRule ^(.*)$ http://user.github.io/repo/$1 [P,L,NE]
它适用于大多数请求,除了根 http://mydom.com/,GitHub 返回 404 明确说明它需要索引文件。如果我明确指定 mydom.com/index.html 它可以工作。奇怪的是,如果我用重定向标志[R] 替换代理标志[P],那么根请求就可以正常工作。 (不明白为什么)
当然,我已经为 root 请求添加了一条规则:
RewriteCond %{REQUEST_URI} ^$
RewriteRule ^$ http://user.github.io/repo/index.html [P,L,NE]
但是这两个规则并没有像预期的那样一起工作。 这就是奇怪的部分出现的地方。
如果我不理会根规则,则根请求会按预期重定向到user.github.io/repo/index.html,但不会获取其余资源(/css/*、/js/*)。明白了。但是,如果我同时设置这两个规则,那么根规则将停止工作(根请求返回相同的 GitHub 404)。其他所有内容都通过代理重定向而没有问题。
为什么会这样?我该如何克服这个问题?
【问题讨论】:
标签: .htaccess mod-rewrite url-rewriting github-pages mod-proxy