假設我們有下面的PHP頁面 「的index.php」:Apache的mod_rewrite和%{REQUEST_URI}問題
<?
if (!isset($_GET['req'])) $_GET['req'] = "null";
echo $_SERVER['REQUEST_URI'] . "<br>" . $_GET['req'];
?>
及以下 「的.htaccess」 文件:
RewriteRule ^2.php$ index.php?req=%{REQUEST_URI}
RewriteRule ^1.php$ 2.php
現在,讓我們訪問「index.php」。我們得到這個:
/index.php
null
這很酷。讓我們訪問「2.php」。我們得到這個:
/2.php
/2.php
這也很酷。但是,現在讓我們來看看「1.PHP」:
/1.php
/2.php
所以......我們索要「1.PHP」,它靜靜地重定向到「2.PHP」的默默重定向到「的index.php ?req =%{REQUEST_URI}「,但這裏的」%{REQUEST_URI}「似乎是」2.php「(我們正在尋找的頁面,在之後的第一次重定向)和$ _SERVER ['REQUEST_URI']是「1.php」(原始請求)。
這些變量不應該相等嗎?由於我試圖僅基於原始請求進行重定向,因此今天給了我很多頭痛。在「.htaccess」中是否有任何變量可以在重定向後告訴我原始請求?
在此先感謝,希望我已經說清楚了。這是我在這裏的第一篇文章:)
爲什麼不簡單使用`$ _SERVER ['REQUEST_URI']`? – Gumbo 2009-08-03 12:53:52