Перевод сайта на ЧПУ (UFU) с помощью mod rewrite...

alger
На сайте с 29.05.2008
Offline
51
2638

Всем доброго времени суток...

Есть такая проблема. Предположим есть небольшой сайт из нескольких десятков страниц, все из которых генерируются PHP скриптом с определенным набором параметров. Все страницы, кроме того, перелинкованы между собой. Т.е., например

http://www.site.ru/script.php?a=b&c=d&e=f

В зависимости от значений параметров генерируются разные страницы, в которых также есть ссылки вида

<a href="http://www.site.ru/script.php?a=b&c=d&e=f"></a>

то есть на "тот же скрипт".

Если мы воспользуемся mod rewrite и настроим файл .htaccess для преобразования ЧПУ в обычный формат, то в браузере можно быдет задавать удобный URL вида

http://www.site.ru/script/b/d/f

НО! Генерируемые страницы все еще будут содержать старые не ЧПУ ссылки. Вопрос заключается в том, можно ли автоматически обрабатывать PHP файлы для преобразования ссылок, содержащихся в них, в ЧПУ? Т.е. своеобразный постпроцессинг средствами самого PHP перед отправкой страницы в браузер, который будет заменять все ссылки в ЧПУ вид?

Иначе придется править сам script.php, чтобы он формировал ссылки в ЧПУ формате. Но хотелось бы автоматизированное решение, чтобы не менять скрипт! Есть идеи?

"People fail forward to success." Mary Kay Ash
Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#1

Вы идею ЧПУ не с того конца курите.

1. движёк генерит ЧПУ ссылки

2. modrewrite преобразует ЧПУ в неЧПУ

3. движёк обрабатывает неЧПУ ссылки

Иначе придется править сам script.php, чтобы он формировал ссылки в ЧПУ формате.

именно.

[Удален]
#2
alger:
Иначе придется править сам script.php, чтобы он формировал ссылки в ЧПУ формате. Но хотелось бы автоматизированное решение, чтобы не менять скрипт! Есть идеи?

Так и придется делать. Наиболее простой но наименее масштабируемый способ - перед окончательным выводом контента прогонять его через preg_replace и заменять все ссылки старого вида на чпу.

parMaster
На сайте с 25.07.2007
Offline
43
#3

Для ПОСТпроцессинга - в начале скрипта ставь

ob_start();

в конце ставь

$s=ob_get_clear();

и прегреплейсом, как уже говорилось.

Но по феншую скрипт должен генерировать уже ЧПУ, как уже говорилось

Удобный сервис закладок (http://vzakladki.com.ua) ICQ: 280060143
alger
На сайте с 29.05.2008
Offline
51
#4
Для ПОСТпроцессинга - в начале скрипта ставь
ob_start();
в конце ставь
$s=ob_get_clear();

и прегреплейсом, как уже говорилось.
Но по феншую скрипт должен генерировать уже ЧПУ, как уже говорилось

Спасибо, именно это и было нужно!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий