PHP может заменить строку другой строкой в выводе HTML, да, но это не значит, что это хорошая идея. Похоже, что это будет достигать именно того, чего вы хотите на первый взгляд, но не очень тонко, и (в случае веб-сайта, сканированного пауком поисковой системы) сломает существующих клиентов, которые ожидают, что URL останутся прежними.
Вместо того, чтобы пытаться перехитрить HTTP с PHP, просто используйте HTTP в ваших интересах. Если у вас есть доступ к серверу oldsite.com
и все ссылки для него должны быть перенаправлены на новый сервер по адресу newsite.com
по тем же URL-путям, то используйте свой веб-сервер, чтобы сообщить клиентам ответ HTTP/1.0 301 Permanently Moved
и Location: http://newsite.com/foo-bar-baz
header.
Это проинформирует ALL HTTP-клиентов вашего веб-сайта о том, что старое содержимое можно найти по новому адресу, а также проинформирует клиента об обновлении его закладок, а также об аннулировании его кэшированного местоположения и другой сохраненной информации. mod_rewrite
делает это абсолютно тривиальным в Apache, но если вам абсолютно необходимо использовать PHP, в качестве крайней меры использует свою функцию header()
для отправки тех же заголовков HTTP, что и mod_rewrite
.