我有一个网站,使用mod_rewritedynamic虚拟子域,如下定义:
<VirtualHost *:80> ServerName example.com ServerAlias *.example.com DocumentRoot /var/www/example.com/www RewriteEngine on RewriteCond %{HTTP_HOST} ^[^.]+\.examle.com$ RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^([^.]+)\.example.com(.*) /var/www/example.com/$1$2 </VirtualHost>
问题是,我想要一个特定的url,说subdomain.example.com/CONTROL/指向www.example.com/使用代理(而不是URLredirect)。
我曾尝试添加:
RewriteRule ^([^.]+)\.example.com/CONTROL(.*) /var/www/example.com/www$2 [P]
但是这没有用。 有任何想法吗?
从[P]的RewriteRule文档部分:
您必须确保replacestring是有效的URI(通常以http://主机名开头),可由Apache代理模块处理。
尝试:
RewriteEngine on RewriteCond %{HTTP_HOST} ^subdomain.examle.com$ # [L] means stop processing after this rule RewriteRule ^/CONTROL/(.*) http://www.example.com/$1 [P,L] RewriteCond %{HTTP_HOST} ^[^.]+\.examle.com$ RewriteRule ^(.+) %{HTTP_HOST}$1 RewriteRule ^([^.]+)\.example.com(.*) /var/www/example.com/$1$2
确保你已经加载了代理模块。 如果您在启用详细logging时遇到问题,
RewriteLog /path/to/rewrite.log RewriteLogLevel 9
你需要为HTTP_HOST有一个RewriteCond
RewriteRule仅适用于URLpath !
尝试这个:
RewriteCond %{HTTP_HOST} ^subdomain.examle.com$ RewriteRule subdomain.example.com/CONTROL/(.*) http://www.example.com/$1 [P]