我们有一个多租户网络应用程序,客户可以在其中为其网站设置自定义域。
当请求无效域时,我们需要在其他域上显示错误页面。处理这个问题的正确方法是什么?我想也许会在另一个网站上发一个303,总是返回404.这会让搜索引擎感到高兴吗?
答案 0 :(得分:2)
我仍在努力确定是否需要这个。由于没有提供很多信息来满足其需要。有许多主机允许用户为自己创建场所。当发生任何错误时,它只是链接到本地404.那么为什么需要转到404的另一个域?用域和子域设置错误文档404。所有人都要调用本地404。对于主域而言,它不仅仅是404,而使子域无能为力。至于允许用户设置自定义域名,我猜这是一个错字。你的意思是"自定义子域"。除非这是正确的,并且它在某种程度上允许客户从您那里购买托管包。他们可以将其卖给自己的客户。如果后者是正确的。您只需要正确设置他们的环境。虽然我认为你的意思是子域名。
ErrorDocument 404 /404.html
有几种更好的方法可以做到以下几点。只提供最快的。 至于想要将404反弹到另一个域,您仍然可以:
在.htaccess中:
ErrorDocument 404 /404.html
在本地404.html中使用:
<meta http-equiv="refresh" content="0; url=http://example.com/">
请注意,您可以使用其他方法。
答案 1 :(得分:1)
首先,尝试在Web主机的控制面板中找到一个应用程序,这样您就可以创建一个错误页面。如果您使用的是 cPanel ,则此应用程序将命名为错误页面,其标题为高级标题。找到此应用程序后,现在创建一个 404 (未找到)错误页面的文件。在 cPanel 中,有特定的“引荐网址”,“访问者的IP地址”,“请求的网址”, “服务器名称”,“访客浏览器”和“重定向状态代码”标记,用于此SSI启用的文件,并在保存404错误页面后,它将被保存到404.shtml
,其中包含一个文件的扩展名,该文件被Web服务器识别为支持SSI的HTML文件。如果没有错误页面应用程序。在您的c面板中,如果您的服务器配置为允许此操作,请尝试使用.shtml
扩展名手动创建错误页面。如果不允许或者文件变得不可读,您仍然可以使用其他扩展,但对于Web服务器,它不会被识别为启用SSI的HTML文件。
最好的方法是重写而不是将所有空子域重定向到/404.shtml
,但首先要确保帐户中有重写引擎。现在我们将使用mod_rewrite
重写所有这些子域。尝试在文件管理器中查找.htaccess
文件。该文件通常位于index
页面所在的同一文件夹中。如果没有这样的文件,您可以在index
所在的文件夹中创建一个新文件。此代码必须位于空.htaccess
源的最顶层,并且在此之后测试以下条件和规则时不要删除它:
Options +FollowSymlinks
RewriteEngine on
并尝试将此指令粘贴到上面的两行代码下面:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Rewrite ^(.*) /404.shtml
如果上述指令不起作用,请尝试以下方法:
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
Rewrite ^(.*) /404.shtml
但是,如果您不想重定向这些空子域,只需在规则的文件扩展名后添加[R]
标记,只需在标记之前忘记单个空格。
答案 2 :(得分:0)
为了让搜索引擎保持满意,请让404屏蔽显示来自无效域。由于随着时间的推移重定向过多,这将防止积累不良声誉。偶尔重定向到规范文档是好的,因为它意味着您正在练习DRY(不要重复自己),重定向到符合搜索汁的规范IRI。在404页面上使用meta noindex以防止搜索引擎记住无效的自定义域IRI。