我试图build立一个mod_rewrite规则,以便当网页www.mysite.com/blog被请求从博客服务Tumblr的页面被加载。 我已经build立了我的Tumblr网站,以便blog.mysite.com返回域名。 目前, www.mysite.com/blog blog.mysite.comredirect到blog.mysite.com 。 我想要的是www.mysite.com/blog显示blog.mysite.com和用户不知道blog.mysite.com 。 我尝试了几种不同的方法来实现这一点。 首先,我尝试使用重写规则:
RewriteEngine On # Turn on the rewriting engine RewriteRule /blog/ http://blog.mysite.com/ [NC,P,L]
然后一个“ProxyPass”(尝试1)
ProxyPass /blog/ http://blog.mysite.com/
并尝试2:
<Location /blog/> ProxyPass http://blog.mysite.com/ </Location>
然后,我看到另一个更复杂的mod_rewrite规则,我也试过:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^mysite.com/blog$ RewriteCond %{REQUEST_URI} !/standard RewriteRule ^(.*)$ http://blog.mysite.com$1 [R] </IfModule>
我将不胜感激任何build议如何最好地做到这一点。
你没有提到每个案例的具体问题,但根据我的经验,当试图debuggingRewriteRules时,最好的办法是打开重写日志,并打开rewriteloglevel。 这将显示传入的请求,以及每个规则的通过/失败,以及与请求匹配的规则。
RewriteLog "/usr/local/var/apache/logs/rewrite.log" RewriteLogLevel 3
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteloglevel
请记住在完成之后禁用此function,因为这会造成性能下降,特别是在3以上。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^mysite.com/blog$ RewriteCond %{REQUEST_URI} !/standard RewriteRule ^(.*)$ http://blog.mysite.com$1 [R] </IfModule>
这个规则几乎是正确的,它应该是:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^mysite.com$ RewriteCond %{REQUEST_URI} !/standard RewriteRule ^(.*)$ http://blog.mysite.com$1 [R] </IfModule>
试试看