apache virtualhost — локальный хост и псевдоним разработки/имя сервера

Я пытаюсь настроить файл apache vhosts, чтобы иметь имя хоста localhost/something и имена хостов «псевдоним». В настоящее время я работаю с API Google, и они не принимают пользовательские псевдонимы в качестве URL-адресов, поэтому я не могу заставить его работать с моими пользовательскими URL-адресами. Есть мысли, что делать? Моя текущая конфигурация, которая не работает:

<VirtualHost 127.0.0.1:80>
    ServerName localhost/go
    ServerAlias localhost/go
    DocumentRoot "D:/username/Web/server.dev/go"
</VirtualHost>

<Directory "D:/username/Web/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order Deny,Allow
        Allow from all
        Require all granted
</Directory>

<VirtualHost *:80>
    ServerName api.server.dev
    ServerAlias api.server.dev
    DocumentRoot "D:/username/Web/server.dev/api"
</VirtualHost>

##... more custom urls with subdomains cut out because it's unnecessary

<VirtualHost *:80>
    ServerName adstrck.server.dev
    DocumentRoot "D:/username/Web/server.dev/adstrck"
</VirtualHost>

### ALL OTHERS ###

<VirtualHost *:80>
    ServerName www.server.dev
    ServerAlias server.dev *.server.dev
    DocumentRoot D:/username/Web/server.dev
</VirtualHost>

Когда я пытаюсь получить доступ к 127.0.0.1/go или localhost/go, я получаю внутреннюю ошибку сервера.


person PaaPs    schedule 10.09.2018    source источник
comment
serverName — это IP-адрес или имя хоста, а не путь. См. https://httpd.apache.org/docs/2.4/mod/core.html#servername. Вы не можете поместить / в имя хоста.   -  person Chris Lear    schedule 10.09.2018
comment
извините, а где указать имя хоста? Вы имеете в виду ИмяСервера?   -  person PaaPs    schedule 10.09.2018
comment
Да, ServerName должен быть IP-адресом или именем хоста.   -  person Chris Lear    schedule 10.09.2018
comment
Ok. Это не поможет в вопросе   -  person PaaPs    schedule 10.09.2018
comment
Проблема в том, что вы получаете внутреннюю ошибку сервера? Можете ли вы найти текст ошибки и поделиться им здесь? (Это почти наверняка будет в журнале ошибок сервера)   -  person Chris Lear    schedule 10.09.2018
comment
[Пн, 10 сентября, 16:56:31.401340 2018] [core:error] [pid 10324:tid 1996] [client 127.0.0.1:61779] AH00124: запрос превысил ограничение в 10 внутренних перенаправлений из-за вероятной ошибки конфигурации. Используйте «LimitInternalRecursion», чтобы увеличить лимит, если это необходимо. Используйте отладку LogLevel, чтобы получить обратную трассировку. Источник ссылки: 127.0.0.1/go   -  person PaaPs    schedule 10.09.2018
comment
в основном цикл перенаправления   -  person PaaPs    schedule 10.09.2018


Ответы (2)


Может быть, вы хотите что-то вроде этого

<VirtualHost 127.0.0.1:80>
    ServerName localhost
    ServerAlias server.dev *.server.dev
    DocumentRoot "D:/username/Web/server.dev"
</VirtualHost>

<Directory "D:/username/Web/server.dev">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order Deny,Allow
        Allow from all
        Require all granted
</Directory>

Затем используйте URL-адрес вида http://localhost/go для просмотра сайта.

person Chris Lear    schedule 10.09.2018
comment
тут не поможет. Я хочу ОБА localhost и serveralias, например server.dev - person PaaPs; 10.09.2018
comment
Хорошо, в вашем примере был тип, я не перепроверял документ, там не было запятой. Это сработало, спасибо. (правда работает только как 127.0.0.1, но все же.. :)) - person PaaPs; 10.09.2018
comment
Извините за опечатку. Я исправил это. - person Chris Lear; 10.09.2018
comment
Я также добавил строку ServerAlias, которая должна заставить работать http://server.dev/go (при условии, что server.dev разрешается в 127.0.0.1) - person Chris Lear; 10.09.2018

В зависимости от вашей ОС/браузера вы можете добавить поддомен разработки на localhost. Например.

<VirtualHost *:80>
  ServerName dev1.localhost
  ## rest of your config
  ## e.g. ServerAlias my.website.on.the.internet.com
  DocumentRoot /var/www/dev1
</VirtualHost>

<VirtualHost *:80>
  ServerName dev2.localhost
  DocumentRoot /var/www/dev2
</VirtualHost>

# Default / catch-all
<VirtualHost *:80>
  DocumentRoot /var/www/html
</VirtualHost>

Затем я указал свой браузер на dev1.localhost, и он разрешил dev1, а также для dev2.localhost и localhost сам по себе разрешил страницу apache по умолчанию.

Это решило мою аналогичную проблему. Протестировано на Apache в Debian WSL. Работал в Windows Chrome, не работал в Windows Firefox. На основании этого SO: https://stackoverflow.com/a/35124491

person Aaron    schedule 30.11.2020