HTTP:将网页信息分成两页的语义

时间:2012-10-01 13:00:15

标签: apache http

我有一个网页,其信息必须分成两个单独的页面。我希望访问者知道现在有两个不同的页面,从而为旧单页页面的访问者提供了一个自定义错误页面,如

(Depending on who you are, ) the page you want is either of these:

    *Link to page A*
    *Link to page B*

这应该是HTML(遵循一般的网站风格)。

我不清楚的是语义和apache配置

  1. 要提供什么HTTP状态代码?有301 Moved Permanently,但我有多个替代方案可以提供。
  2. 是否可以在没有hacky LocationMatch或类似的情况下为我的需求配置apache?理想情况下,我想使用普通的文件服务语义,但HTTP状态代码不应该是200.

1 个答案:

答案 0 :(得分:0)

感谢澄清评论。

在回答你的两个问题时,我会说:

  1. 是的,301是给出的正确答案。这将说明旧页面已永久移动,并会将用户重定向到包含链接的插页式页面。

  2. 您可以通过在旧单页曾经存在的目录中的.htaccess文件中添加一行来实现此目的(假设您也将新页面保留在那里)。或者您可以在主httpd.conf file中添加一行。这些行看起来像这样:

  3. 的.htaccess

    Redirect 301 ./old_page.html ./new_interstitial_page.html
    

    的httpd.conf

    Redirect 301 /path/to/old_page.html /path/to/new_interstitial_page.html
    

    编辑:如果没有更多上下文,这听起来确实像重定向场景。在HTTP术语中,旧位置曾经可用的“资源”现在可以在新位置使用(尽管是部分),因此您可以将客户端“重定向”到新位置或插页式页面。

    但如果这对你来说不合适,你可以试试“410 Gone”。这表示资源根本不存在,而是将客户端指向错误页面。然后,您可以自定义错误页面以包含指向页面A和页面B的链接。您的.htaccess看起来像这样:

    # Enable URL matching and match the old page with "Gone" (G), "Last rule" (L)
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^oldPage.html$ - [G,L]
    </IfModule>
    
    # Special 410 page with links to Page A and Page B
    ErrorDocument 410 /path/to/custom/410-page.html