我有一个问题我遇到了麻烦:/ err404页面的200OK标题状态问题,虽然它应该是404标题。 200好有什么问题?真有可能200 OK应该是404错误页面标题状态吗?
欣赏建议!!非常感谢!
我猜它与.htaccess有关。这是我的.htaccess文件;
ErrorDocument 404 /err404.html
RewriteEngine On
RewriteRule ^login.html$ index.php?s=login&a=loginDo [QSA,L]
RewriteRule ^logout.html$ index.php?s=login&a=logoutDo [QSA,L]
RewriteRule ^([^/]*).html$ index.php?s=$1 [QSA,L]
RewriteRule ^members/([^/]*)$ index.php?s=profile&username=$1 [QSA,L]
RewriteRule ^([^/]*)/$ index.php?s=listing&search[cityString]=$1 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?s=listing&search[neighborhoodString]=$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*).html$ index.php?s=details&seo_friendly=$3 [QSA,L]
我还有一些与此htaccess文件相关的麻烦:(
问题1;当网址类似于http://localhost/fdfcdcvdvdvbdf.html(不存在网址)时,它会重定向到主页,但它应该重定向到err404.html。对这个问题有什么看法吗?对于http://localhost/fdfcdcvdvdvbdf.ht或http://localhost/fdfcdcvdvdv
等网址,err404重定向效果很好问题2; 如何解决这个200 OK问题:/
答案 0 :(得分:20)
404值不仅仅是圣诞树装饰 - 它传达了有关网址的真实信息,即它不存在。发送描述页面不存在这一事实的200页是完全不同的事情,特别是对于程序而言,与人类相反。
答案 1 :(得分:6)
通过为丢失的页面返回200 OK
状态,您可能会混淆浏览器(如果您没有自定义错误HTML,则可能不会显示错误消息)和搜索引擎(他们会开始索引某人告诉他们的任何内容,例如:example.com/this-web-site-is-terrible-use-our-competitor)...
关于mod_rewrite的编辑:
http://example.com/lsdjkldsjlk.html与您的第三个RewriteRule
匹配,因此它会重定向到index.php。
您应该在index.php脚本中检测到没有与s
参数相关的内容,并通过调用header()
返回404状态。
答案 2 :(得分:3)
首先,您可能不希望搜索引擎索引您的404页面。
答案 3 :(得分:2)
嗯,HTTP的语义非常明确:如果在服务器上找不到请求的页面,则应发送404
。
此外,如果您不介意使用垃圾抓取/索引您的网站(当找不到网页时)......
答案 4 :(得分:2)
如果它返回200状态,则不是404错误页面。如果页面不可用(缓存,代理,脚本),失败的任何事情都不会失败并且随之而来的是混乱。此外,Google will hate you(因为垃圾网站会为任何查询返回200页。)只需返回该死的404错误。
答案 5 :(得分:1)
顺便问一下,你知道“404错误页面”中的404来自何处?这正是HTTP错误代码。
软件应该能够区分正确和错误的页面。如果您将包含“404”的页面作为图像发送,则任何软件都不会识别出错误。
答案 6 :(得分:1)
这是一个无障碍问题。 200 OK表示发出的资源是请求的资源。 404表示无法找到所请求的资源,并且发出的资源是错误页面。浏览器使用您发送的状态代码来了解一切是否正常。您可能没有注意到显示的页面与人类有任何差异,但爬虫需要知道这些事情(或者他们会将您的错误编入索引等)。