Как мне остановить mod_rewrite от добавления ссылок на URL?

Я ожидаю, что ответ будет таким простымЯ хочу плакать, но я могуКажется, это понять. Я'Я новичок в mod_rewrite.

Я хотел изменить мои ссылки с таких вещей, как domain.com/?p=about на domain.com/about*/* (с косой чертой) и работает нормально, но всякий раз, когда я перехожу к ссылке, она добавляет новую ссылку в конце ссылки. Например, у меня есть о и контактная ссылка. Если я щелкаю о нем, он переходит на domain.com/about/, затем, если я щелкаю контакт, он переходит на domain.com/about/contact/ и продолжает добавлять ссылки в конец URL. Если я'm на domain.com и нажмите на ссылку (в данном случае, примерно), она перейдет на domain.com/about/, и если я нажму еще 4 раза, моя адресная строка скажет:domain.com/about/about/about/about/about/» Я воспроизвел это в очень простом примере ниже, что я делаю не так?

.htaccess

RewriteEngine On
RewriteRule ([a-zA-Z0-9]+)/$ index.php?p=$1

index.php

<a href="about/">about</a> | <a href="contact/">contact</a><br><br>


Спасибо за помощь!

редактировать: все работает хорошо, если я использую абсолютный путь, но яя бы не стал, если бы я неТ обязательно.

edit2: добавление

RewriteBase /

ломает ссылки. Похоже, они идут на domain.com/about/ и ... / contact /, но я получаю 404 - яЯ предполагаю, что правило, которое я использовал, каким-то образом несовместимо с тем, как яя делаю ссылки, поэтому я также включил index.php.

 Havelock23 окт. 2012 г., 21:21
Как насчет добавленияRewriteBase / просто между двумя другими линиями в вашем?.htaccess
 Havelock23 окт. 2012 г., 21:31
тогда, возможно, посмотрите, как вы создаете ссылки на своих страницах ... (что бы ни случилось с пометкой имен пользователей o.O)
 sdouble23 окт. 2012 г., 21:24
@Havelock: яМы тоже это попробовали, но тогда ссылки больше не работают.

Ответы на вопрос(3)

слишком поздно, чтобы ответить, но добавив эту одну строку в раздел сделает свое дело:

<base href="/"> or <base href="your-domain-name">

<a href="about/">about</a> добавитabout/ на конец URL. Тот'как работают относительные ссылки.

Ваш выбор в порядке разумности:

Просто убери эту косую черту. Тот'причина вашей проблемы:

<a href="about">about</a>

Относительная ссылка заменит последний раздел пути (после последнего/) с вашим новым значением.

Добавить предыдущее../, Это немного странно, но позволяет сохранить ценную косую черту

<a href="../about/">about</a>

Сделайте 301 перенаправление с/about/about в/about, Это приведет к изменению адресной строки с/about в/about/about и обратно

Решение Вопроса

Вам нужно будет изменить ссылки так, чтобы:

<a href="about/">about</a> | <a href="contact/">contact</a><br><br>

становится (обратите внимание на ведущий / на URL):

<a href="/about/">about</a> | <a href="/contact/">contact</a><br><br>

Когда вы находитесь на страницеsite.com/about/us ссылка как

 sdouble15 нояб. 2012 г., 22:24
Тот'Из того, что я нарисовал, используйте глобальную переменную в зависимости от того, на каком сервере он работает (производственный, локальный, и т. д. и т. д.)
 sdouble23 окт. 2012 г., 22:16
Решили использовать абсолютные пути (со скриптом, который будет устанавливать путь для меня). Я уклонялся от этого, поэтому я неОб этом нужно беспокоиться во время разработки и производства. Сервер отличается в зависимости от того, где я нахожусь, когда яЯ работаю над этим в тот день, и я неЯ не хочу менять путь каждый раз во время разработки.
 drew01023 окт. 2012 г., 22:19
Если весь HTML-код жестко закодирован, то это может быть проблемой. Если вы используете веб-фреймворк, он обычно предлагает механизм автоматического определения базового пути, чтобы все ваши URL-адреса были переносимы. Если ты'Если вы работаете с собственным сайтом PHP, вы можете определить переменную всего приложения, которая будет содержать базовый URL сайта, а затем использовать это значение при создании всех ваших ссылок.

Ваш ответ на вопрос