Google Search Console显示“ 404页面未找到”错误
https://example.com/page/https://example.com/page/
并且链接来自外部网站。
我想用.htaccess
重定向:
https://example.com/page/https://example.com/page/
到
https://example.com/page/
有人可以在这方面帮助我吗?
答案 0 :(得分:0)
在.htaccess
文件顶部尝试以下mod_rewrite指令:
RewriteEngine On
RewriteRule ^(.*?)https?:/ /$1 [R=301,L]
这只会删除以http:/
(或https:/
)开头的URL路径上的任何结尾部分。
更新:捕获子模式?
中的(.*?)
使它变得非贪婪,因此它最多只能捕获https:/
的第一次出现并丢弃其余的,而不是直到所有出现的https:/
被删除为止,直到最后一次出现(贪婪)和循环(重定向循环)。
其他说明:
使用302(临时)重定向的第一个测试,以确保它可以正常工作。确认后仅更改为301,以避免缓存问题。
与RewriteRule
模式匹配的URL路径已经将斜杠序列减少为单个斜杠,因此您无法匹配//
(双斜线)在此处(但我认为您不需要这样做)。
如果涉及查询字符串,那么您可能需要稍微不同的方法和另一条指令,因为查询字符串本身(与URL路径相对)可能包含需要删除的“重复URL” (我们首先需要看一个例子)。 RewriteRule
模式仅与URL路径匹配,而不与查询字符串匹配。
在Windows上:如果(方案和)冒号(:
)出现在第一个路径段中(即,格式错误的链接用于文档根目录),那么Apache将生成403 Forbidden 之前 .htaccess
能够重定向。您无法避免这种情况,因为这是操作系统的限制(文件系统路径中不允许使用分号-当Apache尝试将URL映射到文件系统路径时会出现403)。在Linux上不会发生这种情况。例如:https://example.com/https://example.com/
。
更新:如果您没有看到重定向,只是一个404,则可能需要在URL上启用其他路径名信息(PATH_INFO)。例如,在您的.htaccess
文件的顶部:
AcceptPathInfo On