2011-11-27 55 views
1

美好的一天。我的應用程序中存在鏈接問題。我想使用'pretty-urls',所以我想我所有的鏈接看起來像'www.sitename.com/controller/method'。所以我想打印我的所有我通過一個功能鏈接,看起來像如何檢測mod_rewrite是否可用?

function link($url_segments) { 
    if(mod_rewrite_is_available) 
    return BASE_URL.$url_segments; 
    else 
    return BASE_URL."index.php".$url_segments; 
} 

但我不明白如何檢測,如果服務器允許改寫模塊。我發現2個解決方案:在配置

  1. 將一些變量(如笨不會)像 $config["index_variable"]到我的函數內部使用,但是這意味着 我所有的客戶將需要在 安裝更改行配置應用程序主機
  2. 使用函數來檢測mod_rewrite,就像apache_get_modules,但像 我明白它可以不avaibale在一些託管,以及如果 服務器將nginx?

所以我想知道,如何檢測並打印我的鏈接。

謝謝大家的幫助。

回答

1

你可以提供.htaccess給你的客戶端嗎?當你上傳文件時,它會打開重寫模塊?

+0

這是經常完成的。我猜想,那些使用非Apache服務器的人將不得不將規則適應他們選擇的服務器。 –

1

這可能非常棘手和困難,個人而言,我會採用後備方法。

  1. 看看加載的模塊(通過phpinfo()apache2handler的,看是否mod_rewrite
  2. 嘗試sudo apache2ctl -t -D DUMP_MODULES,看是否mod_rewrite的加載
  3. 嘗試使用.htaccess文件,看看是否一切正常。
  4. 嘗試確定使用的服務器軟件,並解析conf文件爲
  5. 使用最壞的無mod_rewrite情況下啓用的服務器,然後手動啓用已安裝軟件後。
+0

哇,快速的回答。謝謝,我決定這太複雜了。一般來說,漂亮的網址用於搜索引擎優化,所以我認爲在後端我會使用像index.php?url = controller/method這樣的鏈接,並且在設置中將選項'Use pretty urls for frontend',如果您確定rewrite_module是啓用」。類似的東西。 ) –