2010-11-14 111 views
1

我正在開發一個基於MVC的應用程序,現在我已經設置了.htaccess重寫規則。不過,我有問題要讓所有內容都顯示正確。 這是我的.htaccess:mod_rewrite和鏈接問題

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?a=$1 [L,NS] 

我遇到的鏈接作爲第一個問題的URL就像「domain.com/folder/index.php?a=whatever/whatever2/asd」,但現在他們是「domain.com/folder/whatever/whatever2/asd」。

我生成的鏈接就像「<a href='index.php?a=new/qwerty'>Qwerty</a>」,但現在當我嘗試生成鏈接時,我必須執行類似「<a href='new/qwerty'>Qwerty</a>」的操作,並猜測是什麼?例如,如果我是「domain.com/folder/new/lol」,然後點擊該鏈接,我將被重定向到「domain.com/folder/new/new/qwerty」,並且它不是我不打算這樣工作。

我無法使用絕對路徑,因爲該軟件的下載對象很容易安裝,而且我無法知道用戶將安裝此軟件的位置,也不希望用戶必須修改代碼的任何內容。

在先進的感謝,

伊萬

回答

0

我終於解決了這個問題。

我做了我自己的鏈接生成器函數,並且我從$ _SERVER ['SCRIPT_NAME'](它給了我們腳本的絕對路徑)刪除了index.php部分。 如果您有多個腳本,只需從該特殊變量中刪除每個可能的腳本。

function url($rel_path) { 
    $start = str_replace("index.php", "", $_SERVER['SCRIPT_NAME']); 
    return $start.$rel_path; 
}