【问题标题】:I want to do 301 redirect but it's going wrong我想做 301 重定向但它出错了
【发布时间】:2020-02-05 13:42:14
【问题描述】:

我想将用户重定向到错误 url 上的 404 页面,但它最终会从所有页面重定向。谁能告诉我怎么了? 这是我的 .htaccess 代码

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME}\.php !-f
RewriteRule . /404.php [L,R=301]

【问题讨论】:

    标签: .htaccess url redirect url-rewriting


    【解决方案1】:

    您不应“重定向”到错误文档。您应该改为使用 ErrorDocument 指令配置自定义错误文档,然后 Apache 将使用内部子请求以 404.php 进行响应,并确保设置了正确的 HTTP 状态(即 404,而不是 301)。

    您检查.php 文件是否存在的条件(在重写之前)并不完全正确,具体取决于所请求的 URL 路径。 REQUEST_FILENAME 包含请求映射到的文件系统路径,它不一定与被请求的 URL 路径相同。

    假设您的 .htaccess 文件位于文档根目录中,请尝试以下操作:

    # Define custom error documents
    ErrorDocument 404 /404.php
    
    RewriteEngine on 
    
    # Rewrite - append .php extension if required.
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule (.*) $1.php [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2013-09-04
      • 2018-03-06
      • 2015-07-21
      • 2021-06-22
      • 1970-01-01
      • 2012-01-21
      相关资源
      最近更新 更多