.htaccess ErrorDocument 404取代了我所有的RewriteRule 301重定向

时间:2016-07-23 17:34:46

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

我在网站上更改了几乎所有的页面名称。没有删除任何实际文件或页面。我在.htaccess中为所有旧页面名称实现了一整套RewriteRule 301重定向到新的页面名称。这一切都很完美。

RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(html)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(html)$  http://www.domain.co.uk/$1  [R=301,L]

RewriteRule ^old-page-name.html$ http://www.domain.co.uk/new-page-name.html [R=301,L]

我已经创建了一个404.html页面来捕获浏览器地址栏中错误地址反向链接和用户拼写错误的流量,并在.htaccess中实现了相关代码,以便在上面的301代码之后将错误的URL重定向到我的404页面。这是有效的,因此如果我尝试访问/ljdshfkkej.html,则会显示/404.html页面。

ErrorDocument 404 /404.html 

但是,现在上面的404规则优先于我的301规则,所以如果有人试图访问/old-page-name.html,它们就不再被重定向到/new-page-name.html而是转到/ 404.html。这不是理想的,但可能会更糟。

是否可以保留404规则,但只能为不存在但没有301重定向的URL激活它?或者它是一个或?

的情况

以下是整个代码的概述。

# .htaccess file last updated 2016/07/22

RewriteEngine on

# redirect index.html/php to root

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(html)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(html)$  http://www.domain.co.uk/$1  [R=301,L]

# redirects from old pages

RewriteRule ^aboutus.html$ http://www.domain.co.uk/about-us.html [R=301,L]
RewriteRule ^ammonia-test-kits-brand.html$ http://www.domain.co.uk/ammonia-test-kits.html [R=301,L]
RewriteRule ^arsenic-free-fluoride-testing-brand.html$ http://www.domain.co.uk/fluoride-test-kit.html  [R=301,L]

# 404 error - page not found

ErrorDocument 404 /404.html

0 个答案:

没有答案