Использование mod_rewrite для преобразования pathinfo в аргументы строки запроса - PullRequest
1 голос
/ 21 февраля 2011

Кажется, я, наконец, больше не могу избежать использования правил переписывания Apache LOL.Так что просто пытаюсь узнать о них.

Я пытаюсь создать SEO дружественные URL.

Это то, что я имею до сих пор.RewriteCond неверен, хотя я думаю:

RewriteCond %{REQUEST_URI} results/(.*)/(.*)/([0-9]*)/(.*)/([0-9]*)/$ 
RewriteRule ^results/(.*)/(.*)/([0-9]*)/(.*)/([0-9]*)/$ results.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5 [L]

Когда я перехожу на URL: http://www.something.co.uk/results/foo/01-01-2011/1234/01-01-2011/1234, он на самом деле работает и правильно отправляет все значения GET.Однако моя проблема заключается в том, что, когда я отправляю значения в results.php с другой страницы, они всегда показывают старый школьный путь с символом? = Foo & 01-01-2011..etc в / из /results/foo/...etc*1010.*

Теперь из того, что я прочитал, rewriteCond должен позаботиться об этом.Однако я не уверен, что я делаю неправильно и почему он не перенаправляет на новую версию.

Любая помощь, руководство, примеры будут оценены

Спасибо

пс, еслиВы видите что-либо в вышеперечисленном, что является плохой практикой или что-то серьезно испорчено, пожалуйста, также прокомментируйте.Как я уже сказал, я все еще учусь:)

1 Ответ

0 голосов
/ 21 февраля 2011

Ваше условие перезаписи не требуется - для этого и предназначена первая часть правила, соответствующая шаблону.

RewriteRule ^results/(.*)/(.*)/([0-9]*)/(.*)/([0-9]*)/$ results.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5 [L]

Похоже, вы также ожидаете, что правило или условие перезаписи обновит URL-адреса, выводимые системой. Все, что они делают, это перехватывают запросы, которые соответствуют их параметрам, и перенаправляют их изнутри. Поэтому, если вы зайдете на файл results.php, URL-адрес не изменится, и вы увидите, как вы говорите, URL старой школы.

...