2011-03-30 85 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