2010-03-24 4 views
0

В моем PHP-коде у меня есть ссылки на URL-адрес на другом сайте. Я тестирую свой сайт локально (используя XAMPP). Возможно ли, чтобы Apache автоматически заменил домен этого другого сайта на localhost?Apache/PHP - псевдоним исходящий URL

Например мой PHP код может быть:

<?php echo "<a href='http://www.othersite.com'>Click me</a>"; ?> 

И я хотел бы, чтобы мой местный Apache псевдоним это

<?php echo "<a href='http://localhost'>Click me</a>"; ?> 

Возможно ли это?

[изменить] Просто, чтобы уточнить, я хочу сделать это, не изменяя код PHP. Возможно, это будет невозможно, но подумал, что стоит спросить, так как это упростит тестирование локально проще, не имея хаков в PHP-коде.

Cheers, Dan.

ответ

1

Apache поддерживает псевдонимы для виртуальных хостов. Используйте ServerAliasdirective и просто создайте псевдоним для другого домена.

Вам нужно будет обновить файл хостов (какую ОС вы используете?), Чтобы указать другой домен на localhost (так что он не выполняет обычный поиск в старых DNS). Перезапустите Apache, и вы должны быть в бизнесе.

+0

Отлично, это сработало! :-) Я использую WinXP. Файл хоста находился в «Windows \ System32 \ drivers \ etc». Спасибо за это :-) – Dan

-1

Я не уверен, почему вы хотели бы делать то, что хотите. Но вы можете создать переменную и создать и, если заявить высказывание.

if (you are localhost) 
    $p = "localhost" 
else 
    $p = "www.othersite.com" 

<a href='http://'.$p.'>Click me</a> 

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

+0

Извините, я, вероятно, не очень хорошо объяснил (обновит оригинальное сообщение, чтобы уточнить, что я имею в виду). Я не хочу менять PHP-код. Это просто упростило бы тестирование локально, если бы я мог оставить исходный URL как есть. – Dan

0

Это не похоже на работу для Apache; даже не в mod_rewrite, так как последовательность событий выглядит следующим образом:

  1. Ваш PHP скрипт создает HTML для страницы, используя код, поставляемый со ссылкой на www.othersite.com
  2. Apache ТОЛЬКО отправляет этот код в браузер пользователя.
  3. Когда пользователь нажимает на ссылку, BROWSER пытается получить доступ к www.othersite.com. Ваш Apache не имеет ничего общего с этим шагом.

Что вам нужно, это то, что нужно для пост-обработки вывода, созданного вашим PHP-скриптом. Угадайте, что: PHP уже может это сделать. Вы можете искать модуль Apache, который выполняет обработку на выходе, прежде чем отправлять его клиенту, но он избыточен, если вы используете PHP.

Решение, предложенное Silmaril89, выглядит довольно звучным для меня; есть переменная, которая сообщает, находитесь ли вы в режиме тестирования и стройте свои URL-адреса в соответствии с этим.

+0

«Вы можете искать модуль Apache, который выполняет обработку на выходе, прежде чем отправлять его клиенту, но он избыточен, если вы используете PHP» <--- Это звучит довольно много, что мне нужно. Я не хочу изменять исходный код PHP (см. Мое редактирование в исходном сообщении). Извините, если я не понял. – Dan

Смежные вопросы