使用RedirectMatch进行htaccess重定向

时间:2015-04-29 16:13:48

标签: .htaccess redirect

我正在添加301重定向到我的网站,这里是htaccess内容:

    RedirectMatch ^/gift/birthday/(.*) /gifts.html

我的浏览器中的结果是:

    http://www.website.com/gifts.htmlbirthday/ 

我希望:

    http://www.website.com/gifts.html

我该怎么做?

编辑:我的htaccess是:

<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^api/rest api.php?type=rest [QSA,L]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
RewriteRule .* - [L,R=405]

RewriteCond %{REQUEST_URI} !^/(media|skin|js)/


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php [L]

RedirectMatch ^/gift/birthday/(.*) /gifts.html
</IfModule>

1 个答案:

答案 0 :(得分:0)

不要混用 mod_rewrite 规则和 mod_alias 这样的指令,它们不是按照.htaccess的顺序处理的,而是分开处理的,因为它们由不同的apache处理模块。

你需要的是这样的东西:

# this is not mod_rewrite rule so it can be outside the IfModule
Options +FollowSymLinks

# all mod_rewrite rules go here
<IfModule mod_rewrite.c>

# initialize mod_rewrite
RewriteEngine on
RewriteBase /

# your redirect
RewriteRule ^gift/birthday/  http://www.website.com/gifts.html [R=301,L]

# copy&paste the rest of your htaccess below, just delete that RedirectMatch line
# ...

此RewriteRule将301重定向从任何以gift / birthday /开头的url重定向到固定的url /gifts.htm。字母[L]表示如果匹配此规则,则跳过其余规则。

不要忘记用&lt;关闭规则集。 / IfModule&gt;最后。