Mod_rewrite动态到子域上的静态

时间:2013-10-11 10:45:21

标签: regex apache .htaccess mod-rewrite dynamic

我使用了有用的教程on this site将我的动态网址重写为静态网址,这是我的工作代码:

RewriteEngine on

RewriteRule ^users/([^/]+)/?$ /beta/user.php?u=$1 [L]

# Externally redirect client requests for old dynamic URLs to equivalent new static URLs
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /beta/user\.php\?u=([^&]+)\ HTTP/
RewriteRule ^/beta/user\.php$ http://www.mywebsite.com/users/%1? [R=301,L]

并且效果很好,导致此网址

www.mywebsite.com/beta/user.php?u=blabla

也可以读作

www.mywebsite.com/users/blabla

现在,问题出在哪里? 所以,我正在移动网站上工作

m.mywebsite.com

我想对包含user.php的“m”子域做同样的事情。 那么

m.mywebsite.com/user.php?u=blabla

将重写为

m.mywebsite.com/users/blabla

然而,当我更改上面的.htaccess时,它没有用。

那么我该如何重写子域呢?提前谢谢!

1 个答案:

答案 0 :(得分:1)

第一条规则中存在轻微的正则表达式问题。

以下是适用于移动网站的更正代码:

RewriteEngine on

# Externally redirect client requests for old dynamic URLs to equivalent new static URLs
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\s/+beta/user\.php\?u=([^&\s]+)
RewriteRule ^ /users/%1? [R=301,L]

RewriteRule ^users/([^/]+)/?$ /beta/user.php?u=$1 [L,NC,QSA]