为什么在.htaccess重定向后我得到$ REQUEST_URI为空

时间:2016-07-28 12:29:11

标签: php .htaccess mod-rewrite

我尝试自定义http://alistapart.com/article/succeed中的说明 根据我的需要 - 将所有* .html页面重定向到解析URL的dispatcher.php文件中。

在我的.htaccess文件中,我添加了

RewriteRule ^(.*)\.(html)$ dispatcher.php  [L,NC]

但是dispatcher.php中的所有参数都是空的:

  echo "1. " . $REQUEST_URI . "<br />";      
  echo "2. " . $DOCUMENT_ROOT . "<br />";    
  echo "3. " . $SCRIPT_FILENAME . "<br />";  

为什么我不接受这些参数?

同时我通过使用以下内容来避免此问题: 在.htaccess中 -

RewriteRule ^(.*)\.(html)$ dispatcher.php?u=$1  [L,NC]

和dispatcher.php -

$u = $_GET['u']; // and use this $u parameter . . .

原始示例代码

RewriteRule !.(gif|jpg|png|css)$ /your_web_root/index.php    # in .htaccess



if(file_exists($DOCUMENT_ROOT.$REQUEST_URI)
    and ($SCRIPT_FILENAME!=$DOCUMENT_ROOT.$REQUEST_URI)
    and ($REQUEST_URI!="/")){ . . .  // in index.php

1 个答案:

答案 0 :(得分:1)

$ REQUEST_URI,$ DOCUMENT_ROOT ... 不是变量!

你应该使用

$_SERVER['REQUEST_URI']
$_SERVER['DOCUMENT_ROOT']
...

P.S。你可以简单地说:

var_dump($_SERVER);