2011-03-30 83 views
0

您好我中有一個名爲「支持」的子目錄中的文件夾,看起來像這樣一個基本的.htaccess文件:mod_rewrite的問題

RewriteEngine on 

RewriteRule ^knowledgebase/([^/]*) knowledgebase.php?article=$1 [NC,L] 
RewriteRule ^knowledgebase/category/([^/]*) knowledgebase.php?category=$1 [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

我已經改變了我的文件的鏈接,並刪除PHP擴展。當我點擊一個鏈接到我的知識庫文件重寫的url時,一切正常,但我有更多的鏈接到相同的文件與查詢字符串在url例如:

$ link ='knowledgebase/category /'.$文章[ 'CATID'];

的問題是,一旦我對知識庫頁面鏈接顯示爲:

http://www.example.com/support/knowledgebase/knowledgebase/category/2

我敢肯定我需要使用的RewriteCond阻止它重寫,但我想不出到底是什麼是必須的。

任何幫助,將不勝感激。

+0

當你說「鏈接顯示爲」時,你的意思是,如果你點擊一個鏈接,你看到的是你在URL欄中得到的,或者你(例如)懸停在鏈接上,顯示的URL你看到了什麼? – Andrew 2011-03-30 15:37:13

+0

@Andrew如果我點擊鏈接,當我將鼠標懸停在上面的示例中時,會看到它指向我的網址。 – Michael 2011-03-30 15:41:57

回答

0

如果我理解正確,我認爲這不是mod_rewrite問題,因爲mod_rewrite與頁面上顯示的鏈接無關。相反,這看起來像是鏈接定義中的hrefs問題(即<a>標籤)。

最快的修復可能是添加類似:

<base href="http://www.example.com/support/" /> 

您的網頁<head>段內。這樣,如果在鏈接中指定了「知識庫」,則該鏈接的URL不會顯示兩次。

讓我知道,如果我有這完全錯誤。

+0

完美工作,但我必須在htaccess文件中指定'RewriteBase/support /'才能正常工作。謝謝。 – Michael 2011-03-30 16:26:38