查找 301 重定向的来源(通过 .htaccess 或 wp_redirect()

查找 301 重定向的来源(通过 .htaccess 或 wp_redirect()

我的一名实习生在网站的一个页面(domain.com/nice-page)上应用了 301 重定向到另一个页面(domain.com/pretty-page),我想删除该重定向。

问题是他不确定重定向是从哪里应用的。

他说他通过插件做到了这一点,但我已经彻底检查了我的网站上的重定向插件,没有找到任何重定向规则。

我也检查了 .htaccess 但也没有找到任何规则。

你们能否告诉我是否有办法找到重定向的来源(一些像检查 html 和 css 问题的魔法)?

我非常感谢在这方面提供的任何帮助。

答案1

永久重定向标头(HTTP 状态代码 301) 可以来自 Apache Web 服务器上的大约 3 个位置:

  • 来自主 Apachehttpd.conf配置文件或 httpd.conf 文件加载的 Include 之一。
  • 如果设置了 AllowOverride,则可以从.htaccess重定向 URL 路径中的任何文件进行设置。
  • 来自网络执行的“代码”(PHP、CGI 脚本等)服务器

别忽视替代方案#4

  • 由网络执行的“代码”(Javescript、JQuery 等)浏览器

Apache 重定向标头可以使用以下任一方式设置mod_alias使用RedirectRedirectMatchRedirectPermanent指令或使用mod_rewrite R旗帜。

如何“代码”这是否取决于情况,并且将是一个很难确定的问题,但运行一个愚蠢的 Web 请求(例如curl -v http://example.com/nice-page)将显示HTTP/1.1 301 Moved Permanently \n Location: http://... Web 服务器是否确实以标头的形式触发了响应,如果不是这种情况,那么您应该查看浏览器脚本。

另请注意:HTTP 301 重定向是“永久移动”因此,Web 浏览器、CDN 和代理服务器都会缓存该指令,在您从服务器配置中删除该指令后,您仍可能会观察到它。您可能需要从新的匿名浏览器窗口进行测试和/或清除缓存。


根据您带有 URL 的评论:

curl -v http://photographyconcentrate.com/camera-buying-guide
*   Trying 104.27.188.166...
* TCP_NODELAY set
* Connected to photographyconcentrate.com (104.27.188.166) port 80 (#0)
> GET /camera-buying-guide HTTP/1.1
> Host: photographyconcentrate.com
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Fri, 20 Jul 2018 11:26:41 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: max-age=3600
< Expires: Fri, 20 Jul 2018 12:26:41 GMT
< Location: https://photographyconcentrate.com/camera-buying-guide
< Server: cloudflare
< CF-RAY: 43d5130783252b40-AMS

这表明您的域名正在使用 CloudFlare,这是一种 CDN,并且确实是通过301 Moved Permanently重定向标头而不是通过 java 脚本实现的。这增加了复杂性,因为重定向也可以在 CF 上设置,甚至不需要存在于您的网络服务器上。

您可以通过绕过 CloudFlare 并运行以下命令来确认重定向是从您的 Web 服务器发送的还是仅由 CloudFlare 发送的:

 curl -v -H "Host: photographyconcentrate.com" http://<real-IP-address-of-your-webserver>/

相关内容