2013-06-22 71 views
0

我有一個腳本的.htaccess:htaccess如何與我的php腳本進行交互?

RewriteBase/
RewriteCond %{HTTP_HOST} ^([A-Z0-9-]+)\.stage-proxy\.com$ [NC] 
RewriteRule ^(.*)$ /index.php/%1.com/$1 [L] 

,所以當我瀏覽到

http://google.stage-proxy.com/analytics 

根據http://htaccess.madewithlove.be,入站URL應該是

http://google.stage-proxy.com/index.php/google.com/analytics 

但每當我試着在PHP中瀏覽我的$ _SERVER變量它仍然出現爲

http://google.stage-proxy.com/analytics 

我知道htaccess已啓用(我知道mod_rewrite模塊已安裝,並且allowOverride All全部啓用)。這是怎麼回事?我的.htaccess知識有一些明顯的漏洞嗎?

僅供參考,我使用的是ubuntu 13.04。不知道這真的會改變什麼。

回答

0

不知道爲什麼你的規則沒有循環,它應該會導致一個500內部錯誤,沒有像RewriteCond %{REQUEST_FILENAME} !-f這樣的東西來防止循環。

不管怎麼說,在$_SERVER['PHP_SELF']應該從的index.php/index.php/google.com/analytics,或者你可以檢查$_SERVER['PATH_INFO]

$_SERVER documentation says

PHP_SELF:當前執行的腳本的文件名,與文件根。例如,地址爲http://example.com/test.php/foo.bar的腳本中的$ _SERVER ['PHP_SELF']將爲/test.php/foo.bar。常數包含當前(即包含)文件的完整路徑和文件名。如果PHP作爲命令行處理器運行,則此變量包含自PHP 4.3.0起的腳本名稱。以前它不可用。

PATH_INFO:包含任何客戶端提供的路徑信息後的實際腳本文件名,但查詢字符串前,如果有的話。例如,如果當前腳本通過URL http://www.example.com/php/path_info.php/some/stuff?foo=bar訪問,則$_SERVER['PATH_INFO']將包含/some/stuff