【问题标题】:Redirect all 404 errors excluding specific 404 urls to homepage using htaccess?使用 htaccess 将所有 404 错误(不包括特定 404 网址)重定向到主页?
【发布时间】:2013-12-04 22:47:15
【问题描述】:

我目前正在翻新我的网站,该网站有 1000 多个页面;这需要更改网址。

  1. 我想将所有 404 错误 301 永久重定向到网站主页,例如 www.domain.com,除了一些特定的 404 URL。
  2. 我想 301 永久重定向那些特定的排除 404 网址(第 1 号)到另一个网址。

我尝试了以下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/about-us0.html [NC]
RewriteCond %{REQUEST_URI} !^/contact_us0.html [NC]
RewriteRule ^(.*)$ /$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^about-us0\.html$ "http\:\/\/www\.domain\.com\/about\.html" [R=301,L]

RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^contact-us0\.html$ "http\:\/\/www\.domain\.com\/contact\.html" [R=301,L]

但是当我浏览到 www.domain.com/about-us0.html 或 www.domain.com/contact_us0.html 时;谷歌浏览器说“这个网页有一个重定向循环”。

我做错了什么吗?任何帮助将不胜感激。


对于不带查询字符串的重定向:

http://domain.com/prod/species.php?action=3&file_id=30

http://domain.com/species-30.php

http://domain.com/prod/species.php?action=3&file_id=101

http://domain.com/species-101.php

我做了这样的事情(如下),效果很好。是否需要对此进行任何更改?

RewriteCond %{QUERY_STRING} ^action=3&file_id=([0-9]+)$ [NC]
RewriteRule ^prod/species\.php$ /species-%1.php? [R=301,L]

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    试试这些规则:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/(about|contact).*?\.html [NC]
    RewriteRule ^ / [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
    RewriteRule ^(contact|about)-us0\.html$ http://www.domain.com/$1.html [R=301,L,NC]
    

    【讨论】:

    • 是否可以通过htaccess将每个以下URL重定向到特定页面...http://domain.com/prod/species.php http://domain.com/prod/species.php?action=3&file_id=101 http://domain.com/prod/species.php?action=3&file_id=30
    • 是的,可以,您想将它们重定向到哪里?还使用重定向,您是否希望保留查询字符串?
    • 我想重定向http://domain.com/prod/species.php?action=3&file_id=101 to http://domain.com/species-101.php and http://domain.com/prod/species.php?action=3&file_id=30 to http://domain.com/species-30.php .....我不希望查询字符串被结转。上面带有查询字符串的 URL 也是 404,所以我也想在 404 中排除它们。
    • 嗨,我刚回到这个问题。你还想要解决方案还是想通了?
    • 在这里发表评论让我知道您的想法。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 2016-06-13
    • 2013-05-17
    相关资源
    最近更新 更多