【问题标题】:.htaccess 404 error regex.htaccess 404 错误正则表达式
【发布时间】:2014-07-14 15:42:52
【问题描述】:

由于网站重组,一些旧的 URL 仍然在 Google 上被编入索引。 我想将旧 URL 重写为新 URL,但由于内容不同,这是不可能的。

旧网址的格式如下:www.mydomain/accessories/a_test.html 为了重写,我想出了这个解决方案,它部分地满足了我的需求:

RewriteRule ^accessories/(.*)\.html$ error.php [L] 

但是,我需要提供 404 标头,以便 Google 知道该页面不再存在。我试过了:

RewriteRule ^accessories/(.*)\.html$ error.php [R=404, L] 

但这会导致内部服务器错误。 有什么想法吗?

【问题讨论】:

    标签: .htaccess http-status-code-404


    【解决方案1】:

    你的重写标志中有一个杂散的空间:

    RewriteRule ^accessories/(.*)\.html$ error.php [R=404,L] 
    

    【讨论】:

      【解决方案2】:

      要发送正确的标题,您可以使用此重写规则:

      RewriteEngine On
      
      RewriteRule ^accessories/(.*)\.html$ error.php [R=404,L]
      

      R=404 后无空格

      但是,这只会发送正确的 http 状态代码,而不会显示来自 error.php 的内容。

      要显示来自 error.php 的内容以及发送正确的 http 状态码,请这样做:

      RewriteEngine On
      RewriteRule ^accessories/(.*)\.html$ error.php [L]
      

      error.php 内部使用这个 PHP 调用:

      <?php
          http_response_code( 404 );
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多