.htaccess重定向无法正常工作

时间:2011-11-18 23:18:49

标签: apache .htaccess mod-rewrite redirect

一个非常奇怪的问题。我有一些.htaccess 301重定向无效,有些是。它们位于同一个服务器上的同一个文件中。

这是一个有效的方法:

RewriteRule ^Email-2 Email-2.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*Email-2\.php\ HTTP/
RewriteRule ^(([^/]+/)*)Email-2\.php$ http://www.myserver.com/myfolder/Email-2$1 [R=301,L]

这是一个不起作用的......

RewriteRule ^finance-step2 finance-step2.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*finance-step2\.php\ HTTP/
RewriteRule ^(([^/]+/)*)finance-step2\.php$ http://www.myserver.com/myfolder/finance-step2$1 [R=301,L]

我有30多个这样的重定向,唯一不起作用的似乎是-step2,-step3等等。所有其他重定向都是。

我在Firefox中使用了Live HTTP Headers,似乎Apache根本没有发送那些不起作用的301代码,但它正在发送301代码。

我非常了解.htaccess和正则表达式,但这个让我感到难过。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我可以请你做一些优化,如: HTTP/末尾的RewriteCond是什么?我删除了它:

RewriteRule ^(Email-2|finance-step2) $1.php [QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*(Email-2|finance-step2)\.php
RewriteRule ^(([^/]+/)*)(Email-2|finance-step2)\.php$ http://www.myserver.com/myfolder/$2$1 [R=301,QSA,L]

有一点非常奇怪:您首先将aa重定向到aa.php,然后将aa.php重定向到http://www.myserver.com/myfolder/aa。那么添加.php是什么意思?

告诉我这是否有效