mod_rewrite如何添加子域名?

时间:2010-07-13 12:21:30

标签: mod-rewrite

RewriteEngine On
RewriteRule ^/ai?$ /Market/publish.jsp [QSA,L,PT]
RewriteRule ^/ar?$ /Market/MailDispatch [QSA,L,PT]
RewriteCond %{HTTP_HOST}   !^web\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://web.example.com/$1 [L,R]
#How skip www\. to web\. for this 1 ? 
#RewriteRule ^/vi/?([0-9]+)\.htm$ /Market/vi.do?id=$1 [PT,L]                    
RewriteRule ^/li /Market/list.do [QSA,PT,L]
RewriteRule ^/vi/locations.jsp /Market/locations.jsp [PT,L]
ErrorDocument 404 /notfound.html

几乎可撤消(?)我尝试http://example.com/vi/{N}.htm应该重定向到http://web.example.com/vi/{N}.htm,其中N是动态ID。

看到mod_rewrite with subdomain and url pattern 没有明确的方法可以使http://example.com/vi/1096.htm传递到下一个版本http://web.example.com/vi/1096.htm,其中数字是动态的。我试过了

1 个答案:

答案 0 :(得分:1)

具有以下方案的规则应该这样做:

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/vi/\d+\.htm$ http://web.example.com%{REQUEST_URI} [L,R=301]

将此规则放在执行内部重定向的规则之前非常重要。否则,可以在外部重写已经内部重写的URL。

如果要在.htaccess文件中使用此规则,请从RewriteRule中的模式中删除前导斜杠。