我想301重定向几个旧网址
http://www.mysite.com/contact/old-page.php
http://www.mysite.com/contact/another-old-page.php
到这个
http://www.mysite.com/contact/
我很确定我的代码是正确的,因为我在其他网站上使用它没有问题。我知道重定向已启用,因为非www到www重定向工作正常。但由于某种原因,这种一次性重定向不起作用;当我访问旧页面时,没有任何事情发生,好像我什么也没做。
这是完整的.htaccess文件:
#Prevent viewing of htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>
#Enable symbolic links
Options +FollowSymLinks
RewriteEngine On
#Force www version of URL
RewriteCond %{HTTP_HOST} ^mysite\.com [NC]
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]
#This is the bit that isn't working
Redirect 301 /contact/old-page.php http://www.mysite.com/contact/
Redirect 301 /contact/another-old-page.php http://www.mysite.com/contact/
#Gzip
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/php text/plain text/xml text/css text/javascript application/javascript application/x-javascript
</ifmodule>
#Caching
<ifmodule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access 1 month"
ExpiresByType image/png "access 1 month"
ExpiresByType text/css "access 1 week"
ExpiresByType text/javascript "access 1 month"
ExpiresByType application/javascript "access 1 month"
ExpiresByType application/x-javascript "access 1 month"
ExpiresByType image/x-icon "access 1 month"
</ifmodule>
答案 0 :(得分:0)
你的重定向看起来很好,但一个可能的冲突是你一起使用mod_alias(Redirect
)和mod_rewrite(RewriteRule
),URI通过这两个模块,两个模块都可以处理它们,不是彼此独立的。有时这会导致意想不到的结果。
尝试使用重写规则并删除Redirect
语句。尝试在“强制www”规则之前添加这两个重定向规则:
RewriteRule ^contact/old-page\.php$ http://www.mysite.com/contact/ [L,R=301]
RewriteRule ^contact/another-old-page\.php$ http://www.mysite.com/contact/ [L,R=301]