mod_rewrite问题

时间:2011-03-30 15:19:20

标签: .htaccess mod-rewrite

您好我在名为'support'的子目录文件夹中有一个基本的.htaccess文件,如下所示:

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 /'.$ article ['catid'];

问题是,一旦我在知识库页面链接显示为:

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

我很确定我需要使用RewriteCond来阻止它重写,但我无法确切地知道需要什么。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我认为这不是mod_rewrite问题,因为mod_rewrite与页面上显示的链接无关。相反,这看起来像是链接定义中实际存在的hrefs的问题(即<a>标记)。

最快的修复可能是添加类似:

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

在您网页的<head>部分内。这样,如果在链接中指定了“knowledgebase”,它将不会在该链接的URL中显示两次。

如果我完全错了,请告诉我。