我正在添加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>
答案 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;最后。