【问题标题】:How to 404 urls in .htaccess?如何在 .htaccess 中设置 404 个网址?
【发布时间】:2020-11-15 20:52:01
【问题描述】:

我正在尝试将 https://www.example.com/page/ 的所有网址重定向到 404。

我遇到的问题是/page/ 之后的每个号码都被重定向到主页,并被编入索引 - 导致重复内容惩罚。

到目前为止,我已经索引了大约 30 个页面,它们都重定向到主页。

我想要在/page/ 到 404(带有 404 标头)之后有一个数字的任何 URL,这样我就可以取消所有这些页面的索引。

到目前为止我已经尝试过:

Redirect 404 ^page/(.*)$ 或者 Redirect 404 /page/*

不出所料,这些都没有用 - 我哪里出错了?

【问题讨论】:

  • 能否告诉我们是否有一个自定义的404.php 文件要显示错误(自定义错误,为清楚起见)您要重定向到?
  • 您的.htaccess 文件中还有其他指令吗?如果您有现有的 mod_rewrite 指令,则最好使用 mod_rewrite。

标签: apache .htaccess


【解决方案1】:

Redirect 404 ^page/(.*)$Redirect 404 /page/*

你很接近,除了 Redirect 指令使用简单的前缀匹配,它不使用正则表达式 (regex) 或通配符匹配。

使https://www.example.com/page/ 的所有网址重定向到 404。

要使对/page/ 的所有请求导致 404,无论后面是否有数字,您都可以使用以下命令:

Redirect 404 /page/

如上所述,Redirect 指令使用简单的前缀匹配,因此上面为任何以/page/ 开头的 URL 提供 404。

但是....

/page/ 到 404 之后有数字的任何 URL

要专门为 /page/<number> 而不是 /page/ 形式的 URL 提供 404,那么您需要使用 RedirectMatch 指令而不是使用正则表达式来匹配而不是前缀匹配。

例如:

RedirectMatch 404 ^/page/\d+$

\d+$ 匹配 URL 路径末尾的 1 个或多个数字。所以上面将匹配/page/1/page/123456,但不匹配/page//page/abc/page/123z等。

如果您想匹配/page/<something>,其中<something> 字面意思是任何东西,但不能仅匹配/page/。然后您可以改用以下内容:

RedirectMatch 404 ^/page/.

以上匹配位于 URL 路径开头的 /page/,后跟至少 1 个其他字符。

请注意,虽然我们在这里使用 RedirectRedirectMatch 指令,但没有外部重定向(3xx 响应)。 404 由 Apache 作为内部子请求提供服务。 Apache 发送 404 Not Found 标头。

但是,如果您特别想更快地“取消索引”这些页面,则可以考虑发送“410 Gone”。这对于搜索引擎来说是一个更强的信号,表明该页面不会返回。在这种情况下,您还可以使用gone 关键字代替410 状态码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2012-01-10
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多