2009-12-21 55 views
2

只是在理論:幾乎所有的現代網站以這種方式工作:在沒有.htaccess的情況下開發網站導航有哪些選擇?

somedomain.com/layer1/layer2/action 

例如:

http://stackoverflow.com/questions/ask 

這通常用的.htaccess和ModRewrite引擎完成。前一段時間,我偶然發現了一篇描述PHP出現問題的文章。我不記得這個名字了。那段PHP代碼知道當前打開的URL。它能夠告訴哪個域名被調用,什麼TLD被稱爲,什麼是第一個目錄,什麼是第二個目錄,什麼是被叫文件等。

我知道Kohana框架使用這種技術,但不知道在哪裏看。任何人都熟悉這個?

回答

3

你的意思是使用PATH_INFO環境變量。 參見例如here

沒有訪問的.htaccess設置,您將然而總是有一個filename.php在使用該方法的路徑:

www.domain.com/filename.php/questions/ask/ 
+0

有意思。哦,是的,我現在記得從我以前的Kohana時代開始,我必須在.htaccess中爲www.domain.com/filename.php/問題設置一個重寫。這將是下一個問題:-) – openfrog 2009-12-21 14:42:24

+0

嗯...所以你想使用mod_rewrite來解決你不使用mod_rewrite創建的問題?還是我完全誤解你說的? – 2009-12-21 14:46:32

+0

是的,有點;)...以及編程處理它是有道理的。設想一個可以讓你創建導航圖層的框架。這就是我想要做的。我認爲在PHP中完成比在.htaccess中搞亂更好。甚至不知道PHP是否可以讀取/寫入.htaccess。當然,這也可能是一個解決方案,儘管我喜歡用PHP來做這件事。 – openfrog 2009-12-21 14:48:43

3

正在發生的事情在大多數情況下的.htaccess的表面之下是你是什麼尋找。很多情況下,.htaccess文件只是將任務委託給一個index.php文件,該文件本身已準備好處理傳入的代表控制器,方法和參數的值。

我不明白爲什麼你不能簡單地創建自己的.php文件來解析出url並處理這些值。你將僅僅需要使用PHP文件作爲您的所有URL的基礎,但:

www.mysite.com/index.php/controller/method/parameter1/parameter2 
1

你可以使用Apache的錯誤文件播放,但它只是一個黑客(如改寫爲好),而不是一個乾淨的解。

+0

需要特別指出:寫入.htaccess文件'ErrorDocument 404/index.php'(假設你在文檔根目錄下)。這會將所有404錯誤重定向到index.php。 – Boldewyn 2009-12-21 14:36:20

+0

什麼是-1?我想給出完全相同的激怒! – Boldewyn 2009-12-21 14:36:50

+0

我沒有-1,但這並不意味着你會將錯誤狀態404返回給每個人?這不是一個壞主意嗎? – 2009-12-21 14:39:57

1

您可以使用HTTP標頭的組合,但這些標頭在某些Web服務器上可能不可靠。要查看HTTP頭中提供的服務器上,讓頁面只此:

<?php phpinfo(); ?> 

外觀爲PHP變量部分,特別是這些,你有可能使用的:

_SERVER["HTTP_HOST"] 
_SERVER["SCRIPT_NAME"] 
1

看看Front controller pattern

本質上,您可以將所有請求重定向到解碼URL並決定下一個操作的單個PHP文件。

這不是PHP特定的順便說一句。

相關問題