2010-01-31 37 views
0

我有一个CMS的网站使用了mod_rewrite使网址看起来是干净。此前,干净的URL有扩展名为.htm,但我想这个过渡到它们出现假冒的子目录,IE:的mod_rewrite的.htm假子目录

http://www.example.com/pagename/ 

我拥有两个重写规则改写这两个老方案和潜在的新一个:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+).htm$ index.php?page=$1 [QSA] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ index.php?page=$1 [QSA] 

我的问题是,我试图用来重定向旧URL到新的规则什么都不做。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+).htm$ $1/ [R=302,NC,QSA] 

回答

1

您不能使用两个相同模式的规则,因为只有第一个规则会被应用。尝试用新的“重定向”规则替换您的“重写”规则,以使旧URL重定向而不是刚刚重写:

# redirect foo.htm to foo/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)\.htm$ $1/ [R=301,NC] 
# rewrite foo/ to index.php?page=foo 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ index.php?page=$1 [QSA] 
+0

谢谢。为了记录,我使用的规则: RewriteRule ^(。+)\ .htm $ http://www.example.com/$1/ [R,NC,QSA] – Gelatin 2010-01-31 18:14:12