Как псевдоним имени хоста на Mac OSX

24

Короче говоря, я хотел бы иметь возможность открыть браузер и открыть, local.example.comно на самом деле он загружаетсяhttp://localhost/path/to/example.com/

Я использую Mac OSX 10.5 и не боюсь испачкать руки терминалом :)

Я использую Apache в качестве локального сервера.

Остин Хайд
источник
Вы пытаетесь обслуживать веб-страницы для внешнего мира или ожидаете, что URL local.example.com будет работать на вашем компьютере?
Стивен Дженнингс
Просто для моей собственной машины. Становится утомительным вводить / запоминать полный путь к файлу для моей локальной копии любых веб-сайтов, над которыми я работаю.
Остин Хайд,

Ответы:

31

Просто для ясности, я основываю это на предположении, что вы действительно хотите, чтобы http://local.example.com загружал буквальную веб-страницу http: //localhost/path/to/example.com . Другими словами, это будет работать только для этой машины. Если, с другой стороны, вы пытаетесь обслуживать веб-страницы внешним миром с помощью своего компьютера Mac OS X, тогда это другой вопрос.

Сначала добавьте новую строку в ваш /etc/hostsфайл:

127.0.0.1   local.example.com

Вы можете сделать это, выполнив команду sudo nano /etc/hosts, добавив эту строку в конец, затем сохраните ее, нажав Ctrl-X, Y.

То, как вы на самом деле перенаправляете / псевдоним адрес http://local.example.com на http: //localhost/path/to/example.com/, зависит от того, какой веб-сервер вы используете. Предполагая, что вы используете Apache:

Если вы хотите, чтобы в браузере пользователя отображался local.example.com, вы хотите настроить виртуальный хост, и ваш httpd.confфайл должен иметь что-то вроде следующего:

<VirtualHost *:80>
ServerName local.example.com
DocumentRoot /www/path/to/example.com
</VirtualHost>

Если, с другой стороны, вы хотите, чтобы строка адреса веб-браузера изменилась на http: //localhost/path/to/example.com/ , то вместо этого вы захотите использовать mod_rewrite для создания перенаправления :

RewriteCond %{HTTP_HOST}   !^local\.example\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/?(.*)         http://localhost/path/to/example.com/$1 [L,R,NE]
Стивен Дженнингс
источник
Это не пойдет по какому-то определенному пути
Джон Т
@ Джон, ты прав, исправлено.
Стивен Дженнингс
Если бы желаемый «псевдоним» был https://localhost/path/to/example.com, то есть HTTPSнет HTTP, будет ли это решение все еще применяться?
Кевин Мередит
@KevinMeredith это невозможно. Браузер должен знать, что он говорит по HTTPS. Это может быть возможно с перенаправлением HTTP 302, которое в Apache называется Redirect. httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect
Жук
/ etc / hosts обычно перезаписывается, если вы используете VPN
Джонатан Нойфельд