Php 检查站点是否被.htaccess重定向到中

Php 检查站点是否被.htaccess重定向到中,php,.htaccess,Php,.htaccess,我在.htaccess文件中有以下规则: RewriteRule orders\.html orders.php [L,NC] 我如何在orders.php中检查用户是否输入orders.html或orders.php作为请求URL 如果用户在地址栏中有orders.php,我想将其重定向到orders.html。为了在重写后从php获取最初请求的URI: 请尝试$\u服务器['REDIRECT\u URL']。根据我的经验,Apache的mod_rewrite模块为CGI填充REDIRECT

我在.htaccess文件中有以下规则:

RewriteRule orders\.html orders.php [L,NC]
我如何在orders.php中检查用户是否输入orders.html或orders.php作为请求URL

如果用户在地址栏中有orders.php,我想将其重定向到orders.html。

为了在重写后从php获取最初请求的URI:

  • 请尝试
    $\u服务器['REDIRECT\u URL']
    。根据我的经验,Apache的mod_rewrite模块为CGI填充
    REDIRECT_URL
    变量

  • $\u服务器['REQUEST\u URI']
    也应该很有用

  • Do
    print\r($\u服务器)
    查看您可以使用的所有变量

    如果地址栏中有orders.php,我想将用户重定向到orders.html

    如果您正在寻找.htaccess解决方案,请尝试下面的代码

    RewriteEngine on
    RewriteBase /
    
    #if the user requested orders.php
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /orders\.php [NC]
    #301 redirect them to orders.html
    RewriteRule . orders.html [L,R=301]
    
    #existing rule to rewrite .html to .php
    RewriteRule ^orders\.html$ orders.php [L,NC]
    

    @贾斯汀:浏览器对
    orders.php
    的请求触发。不执行重写。PHP脚本检测到请求了
    orders.PHP
    ,并要求浏览器重定向到
    orders.html
    。然后,从浏览器请求
    orders.html
    ,触发重写规则,在内部重定向到
    orders.php
    (尽管用户仍然在URL栏中看到
    orders.html
    )。在这里我看不到无限重定向的可能性,您的方式只会将用户重定向到一个不存在的非PHP页面。@LightnessRacesinOrbit
    the_REQUEST
    是唯一一个从原始请求设置后不可变的变量,因此它不会受到后续重写测试的影响。那么你认为这对解决这个问题有用吗?嗯,它并没有达到预期的效果。它确实会重定向,但导航到order.php后,地址是(因此服务器上有orders.php文件的完整路径)。也许我做错了什么?@LightnessRacesinOrbit是的,这似乎很相关,所以我发布了一个answer@bpiec您的.htaccess是否与上述内容完全相同?
    RewriteBase/
    ?请求URI就是我所需要的,谢谢!为什么这不在phpinfo()中?!在我写这篇文章之前我已经看过了。