2010-03-04 142 views
5

我正在爲我創建的網站構建一個小型PHP框架,並且想知道是否可以依靠mod_rewrite作爲大多數主機上的可用工具。我可以依靠mod_rewrite嗎?

  • 使用它甚至是一個好主意嗎? 已有許多優點(一個入口點,「漂亮」,可讀的URL)

  • 它不在哪裏?

  • 如果mod_rewrite在該主機上不可用,我應該在框架中添加一個備選項嗎?

回答

5

mod_rewrite的是一般可用。如果它在主機的服務器上不可用,請刪除它們。

+0

我說的是我的客戶的主機。 – someone 2010-03-04 16:25:22

+0

這是如何改變答案的?它仍然普遍可用,如果不是,您應該將客戶端切換到不同的主機上。 – ceejayoz 2010-03-04 16:28:09

+0

如果您懷疑客戶端可能無法訪問mod_rewrite的,那麼你應該基於這樣的假設建立自己的框架。 – thetaiko 2010-03-04 16:33:03

2

如果您正在開發一個公開可用的應用程序,則應該考慮mod_rewrite可能不可用並支持替代方法。 AcceptPathInfo就是其中之一。

+0

+1您提供的選項越多,您的產品擁有的機會就越多。 – 2010-03-04 17:05:12

0

mod_rewrite的只是爲Apache,所以如果您需要在IIS或別的東西,你將有問題的工作,但在PHP中,你也可以使用這個:

private function getURI() 
{ 
    $uri = ""; 

    if (isset($_SERVER['PATH_INFO'])) 
     $uri = getValueFrom($_SERVER, 'PATH_INFO', @getenv('PATH_INFO')); 
    elseif (isset($_SERVER['ORIG_PATH_INFO'])) 
     $uri = getValueFrom($_SERVER, 'ORIG_PATH_INFO', @getenv('ORIG_PATH_INFO')); 
    else 
     $uri = ""; 

    $scriptname = basename($_SERVER['SCRIPT_FILENAME']); 
    if (strpos($uri, $scriptname) > -1) 
     $uri = substr($uri, strpos($uri, $scriptname) + strlen($scriptname), strlen($uri)); 

    return $uri; 
} 

更改網址是好的做法,actualy,廣泛適用在網絡上,是一個SEO recomendation因爲是最好有這樣的:

domain.com/aboutus

這個

domain.com/index.php?app=main &行動=顯示& ID = 1

3

mod_rewrite的模塊通常是大多數的Apache承載這些天繳費。但是,要解決缺失問題並不困難,通過這樣做可以確保人們堅持使用關閉的主機/ IT人員或運行IIS的主機/ IT人員等。

當今構建的大多數新框架或應用程序都使用mod_rewrite通過單個前置加載PHP文件(稱爲引導,前置模式等)截取所有URL請求。不是域名的URL部分被解析爲某個對象,並且只要您需要訪問該URL,就會使用該對象。

當mod_rewrite的不可用時,在

http://example.com/index.php/foo/baz/bar 

形式URL被代替使用。上述URL的請求由index.php文件處理。然後,您可以解析服務器變量中的一個像

$_SERVER['REQUEST_URI'], $REQUEST['PATH_INFO'], etc. 

到一些對象(同一個對象,如果你有mod_rewrite的你會使用),並使用該對象時,你需要訪問的URL信息。

無論哪種方式,你的框架/應用程序的其餘部分只是訪問對象,而不必擔心信息如何進入。

Additional Reading

0

它在大多數服務器可用 - 但如果你懷疑這是不是你應該做一個動態的方式來獲取鏈接 - 然後你可以有你的一切,說是否之前修改預定義常數不是mod_rewrite可用。然後,您可以使用該常量獲取URL以確定發生的情況。

0

我認爲,任何像樣的應用程序應該使用mod_rewrite,大多數web主機都提供了這一點。如果他們不提供,請下車。

而且,不只是mod_rewrite是一個不錯的選擇使用,但也是這樣的php_valuemax_execution_time等其他PHP設置,以確保您自定義您的環境,以滿足您的應用目的。

相關問題