Forum Webscript.Ru

Программирование => PHP => Тема начата: evgkuz от 13 Июня 2003, 19:11:36

Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: evgkuz от 13 Июня 2003, 19:11:36
Можно ли как-то на PHP автоматически переделывать ссылки:
"/file.php?id=461" в "/461/" ?

Или это можно сделать только, генерируя директории и файлы "index.html" в них ?

Говорят, что это необходимо для лучшей обработки поисковиками, правда ли это ?
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: Макс от 13 Июня 2003, 19:28:52
не очень понял, где именно ты хочешь поменять ссылки.
Если в существуюших PHP-скриптах, то наверное самое простое, через

function change_links($buffer) {
... /// здесь через preg_replace меняешь ссылки
}

ob_start("change_links");

http://php.net/ob_start
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: Макс от 13 Июня 2003, 19:35:29
хотя наверное тебе просто нужен mod_rewrite
На http://sitemaker.ru/ есть статьи
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: Ancient от 14 Июня 2003, 13:53:43
Опять возвращаемся к теме которую обсуждали два дня назад... Сейчас еще кто-нибудь скажет что все поисковики нормально понимают url some.php?var=value

Онтосительно php есть способ (не проверенный):
1. пишем все что угодно и как угодно (some.php?var=value и т.д.)
2. Все ссылки делаем вида some.php/var-value/var1-value1/
3. пишем код в свою 404 страницу примерно след. содержания:
- разбираем нужные переменные
- выдаем код 302, переходим на нужный файл и передаем методом POST переменные которые получили из начального url.

Если register_globals=ON то должно сработать...
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: Xander от 14 Июня 2003, 14:05:59
Ancient
не провереннный????
он на сотнях сайтов используется.
http://spectator.ru/issues/161

но mod_rewrite - корректнее.
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: Ancient от 14 Июня 2003, 15:24:42
Короче, не знаю как на сотнях сайтах, вот что можно:
Разбираем uri и записываем все переменные в массив $HTTP_GET_VARS (или еще куда, не имеет значения). После этого делаем:


Header("HTTP/1.1 200 OK");
require ($scriptname);


$scriptname я думаю понятно откуда взять. Это работает.

PS Блин, только что посмотрел ссылку, оказывается я просто перепечатал то, что там уже давным-давно было написанно... Sorry
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: dub от 28 Июня 2003, 03:05:40
Xander
mod_rewrite ведь не устанавливается в Апаче по умолчанию, или? Насколько переносимым будет решение с использованием mod_rewrite? И в чем его корректность - в том, что не нужно выдавать браузеру ложного сообщения ОК?
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: Xander от 28 Июня 2003, 11:04:57
что значит "по умолчанию"?
апач после установки нодо обязательно настравивать. А что бы заработал mod_rewrite надо раскомментировать две строчки в конфиге, насколько я помню. Это как - "по умолчанию" или нет? :)

переносимым куда?

Корректность в этом, да. А также в том, что ты не надо будет своим скриптом разбирать URL-ы. Ну и в логах мусора меньше будет.
Скорость, правда, будет существенно больше только тогда, когда директивы для mod_rewrite прописаны в htttpd.conf а не в .htaccess. По крайней мере раньше так было.
Название: Можно ли как-то на PHP автоматически переделывать ссылки?
Отправлено: nagash от 28 Июня 2003, 21:44:06
Xander
многие провайдеры отключают мод реврайт из-за того, что он очень много ресурсов потребляет...
так что скриптом всё такие интереснее ссылки разбирать... да к тому же больше вариаций когда скриптом... =)