为啥这个 301 重定向会导致重定向到错误的 url?

Posted

技术标签:

【中文标题】为啥这个 301 重定向会导致重定向到错误的 url?【英文标题】:Why does this 301 redirect results in redirect to wrong url?为什么这个 301 重定向会导致重定向到错误的 url? 【发布时间】:2014-08-12 21:05:09 【问题描述】:

重新启动我们的网站后,我们必须将大多数链接重定向到,其中大部分是全新的 url 路径。这使我们看到了 htaccess 中的 301 重定向列表,如下所示。但由于某些奇怪的原因,一些规则重定向到与 .htaccess 中所写不同的页面。我已经在文件中搜索了指向该结果 URL 的任何其他重定向(显然,它以 404 结尾),但它没有制定。

例如,以下 301 重定向最终会出现在错误的 url

Removed due to SEO

这最终会在:由于 SEO 而被删除

在完整的 .htaccess 下方:

Removed due to SEO

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

更新:

我认为这与以下设置有关:

由于搜索引擎优化而被删除

因为在第一行中'curriculum-vitae-startpagina'被更改为新结构,它在第二次重写甚至可以找到链接之前自动重定向第二个url。对此的解决方案是编写只有 exact url '/curriculum-vitae-startpagina/' 没有其子页面会受到此重写的影响。

有什么办法吗?

【问题讨论】:

我已经尝试在 phpmyadmin 中进行查找和替换,但也没有运气 【参考方案1】:

经过长时间的挖掘,我自己找到了解决方案。

正如我已经在我的帖子中更新的那样,父文件夹重定向已经影响了子 URL,使子 URL 不再匹配重写规则。

为确保父文件夹重写不会影响子页面/文件,请使用 RedirectMatch 而不是 Redirect:

RedirectMatch ^/folder$ http://example.com/

这将确保仅重写文件夹本身,而不是其子页面/文件。

这个问题的根源找到了here

【讨论】:

以上是关于为啥这个 301 重定向会导致重定向到错误的 url?的主要内容,如果未能解决你的问题,请参考以下文章

301 重写/重定向规则导致 500 内部服务器错误

为啥jQuery会阻止propper 301重定向?

为啥在 URL 中缺少尾部斜杠 (/) 时会发生重定向?

nginx为啥返回301重定向

是啥导致了这个 301 重定向? [关闭]

301将index.html重定向到/或/index.php