.htaccess重定向301 - 什么也没发生

时间:2014-01-09 20:21:00

标签: .htaccess redirect

我想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>

1 个答案:

答案 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]