在Apache中mod_rewrite url的build议

我试图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> 

试试看