301重定向优先顺序

时间:2011-07-29 09:22:42

标签: .htaccess redirect http-status-code-301

当我重做公司的网站时,我希望将所有页面的扩展名从HTML更改为PHP。所以我将这些行添加到.htaccess文件中。

RewriteEngine On 
RewriteRule ^/?(.*)\.html$ /$1.php [R=301,L]

然而,联系人和关于页面的信息都位于旧网站的一个文件夹中,我不想将它们放在新网站上。因此,如果我将特定的重定向置于通用的“HTML-to-PHP”重定向之上,如下所示:

redirect 301 /company-information/contact.html http://www.example.com/contact.php

RewriteEngine On 
RewriteRule ^/?(.*)\.html$ /$1.php [R=301,L]

是否会在查看通用重定向之前重定向联系页面,或者它是否会一直通过.htaccess文件并覆盖文件中的任何内容。

或者我是否完全了解了这一点,还有另一种更好的方法吗?

2 个答案:

答案 0 :(得分:1)

正如@LazyOne的评论中所提到的,优先级较高的规则应该之前 .htaccess中的优先级较低的规则

答案 1 :(得分:0)

首先,我不明白为什么要更改客户端的文件名后缀。它更好&很容易删除它。

其次,Apache's Redirect directive告诉客户端通过发送HTTP Location标头从另一个位置获取资源。这是一个多余/无用的往返。

最好使用重写规则为用户提供不同的内容,请尝试:

RewriteCond ${REQUEST_URI} =/company-information/contact.html
RewriteRule ^(.*)$ /contact.php [L]