mod_rewrite вопрос - PullRequest
       10

mod_rewrite вопрос

0 голосов
/ 30 марта 2011

Привет, у меня есть основной файл .htaccess в папке подкаталога с именем 'support', который выглядит следующим образом:

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 = 'база знаний / категория /'.$ article [' catid '];

Проблема в том, что когда я попал на страницу базы знаний, ссылки выглядят так:

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

Я почти уверен, что мне нужно использовать RewriteCond, чтобы остановить его переписывание, но я не могу точно определить, что требуется.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 30 марта 2011

Если я правильно понимаю, я думаю, что это не проблема mod_rewrite, так как mod_rewrite не имеет никакого отношения к тому, какие ссылки отображаются на странице.Скорее, это похоже на проблему с hrefs, которые на самом деле находятся в ваших определениях ссылок (т. Е. <a> теги).

Самое быстрое решение - добавить что-то вроде:

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

в разделе <head> ваших страниц.Таким образом, если в ссылках указана «база знаний», она не будет дважды отображаться в URL-адресе для этой ссылки.

Дайте мне знать, если я полностью ошибаюсь.

...