Ссылка html-страницы виртуального хоста apache2 ведет на страницу по умолчанию - PullRequest
0 голосов
/ 20 октября 2019

Попытка узнать, как настроить виртуальные хосты на Apache2.4.

У меня есть 2 или более виртуальных хоста, "vhost1", "vhost2" и так далее. У этих виртуальных хостов есть «index.html» в их DocumentRoot и «step2.cgi» в их каталоге {DocumentRoot} / cgi-bin.

Цель состоит в том, чтобы из index.html в DocumentRootЯ хочу щелкнуть ссылку, содержащуюся в этом index.html, чтобы перейти в каталог cgi-bin vhost и запустить оттуда скрипт.

Проблема, с которой я сталкиваюсь, заключается в том, что я нажимаю на ссылку вindex.html, ссылка пытается открыть указанный файл в DocumentRoot сервера по умолчанию. И в ответ получает «ошибку 404».

Как получить ссылку на относительный URL-адрес для активации cgi в каталоге cgi-bin виртуального хоста, с которого я начал?

Я отмечаю, что если у меня есть ссылка в index.html, которая просто ссылается на «step1.html», эта страница отображается правильно.

Что я делаю не так? Спасибо!

У меня есть виртуальный хост с конфигурацией:

<VirtualHost *>

 DocumentRoot /srv/www/vhosts/vhost1/htdocs
 ServerName vhost1.local
 ServerAlias vhost1
 ServerAdmin root@server1.local

 <Directory /srv/www/vhosts/vhost1/htdocs/>
  DirectoryIndex index.cgi
  DirectoryIndex index.html
  AddHandler cgi-script .cgi
  AddHandler cgi-script .pl
  AllowOverride None
  Options +ExecCGI -Includes
  Require all granted
 </Directory>

 <Directory /srv/www/vhosts/vhost1/cgi-bin/>
  DirectoryIndex index.cgi
  AddHandler cgi-script .cgi
  AddHandler cgi-script .pl
  AllowOverride None
  Options +ExecCGI -Includes
  Require all granted
 </Directory>

 CustomLog /srv/www/vhosts/vhost1/logs/access_log vhost_common
 ErrorLog /srv/www/vhosts/vhost1/logs/error_log

</VirtualHost>

Файл index.html выглядит следующим образом:

<html>
  <head>
     <title>
        My page title
     </title>
  </head>
  <body>
     <a href="http://vhost1.local/cgi-bin/step2.cgi">
              Click here:
     </a>
     <a href="step1.html">
              or  here:
     </a>
  </body>
</html>

И ошибка в файле error_log::

[Sun Oct 20 00: 33: 37.611844 2019] [cgi: ошибка] [pid 3770] [клиент 192.168.0.103:63367] AH02811: сценарий не найден или не может выполнить статистику: / srv/www/cgi-bin/step2.cgi, реферер: http://vhost1.local/

1 Ответ

0 голосов
/ 22 октября 2019

Нашёл!

Похоже, что перед директивой "" нужна директива "scriptalias".

Как:

 ScriptAlias /cgi-bin/ "/srv/www/vhosts/vhost1/cgi-bin/"

 <Directory /srv/www/vhosts/vhost1/cgi-bin/>
  DirectoryIndex index.cgi
  AddHandler cgi-script .cgi
  AddHandler cgi-script .pl
  AllowOverride None
  Options +ExecCGI -Includes
  Require all granted
 </Directory>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...