VirtualHost 中的别名不起作用并出现 404 错误
Alias inside VirtualHost is not working and gives 404 error
我有一个使用 VirtualHost
维护多个域的服务器,我正在尝试设置 GitWeb according to Gitweb - ArchWiki。
根据 wiki,我必须将以下行附加到 Apache 配置文件中。
Alias /gitweb "/usr/share/gitweb"
<Directory "/usr/share/gitweb">
DirectoryIndex gitweb.cgi
Options ExecCGI
Require all granted
<Files gitweb.cgi>
SetHandler cgi-script
</Files>
SetEnv GITWEB_CONFIG /etc/gitweb.conf
</Directory>
在此之后,Alias
工作,我可以通过访问
之一来访问该服务
192.168.10.102/gitweb/(本地IP)
https://my_domain_1.com/gitweb/
https://my_domain_2.com/gitweb/
...
到目前为止,一切正常。
现在我想将 Alias
的效果限制在一个域中:my_domain_1.com
。所以我将上面的行移动到其现有的 VirtualHost
设置中。
<VirtualHost *:80>
DocumentRoot "/var/www/html1"
ServerName my_domain_1.com
# The lines are pasted here.
RewriteEngine on
RewriteCond %{SERVER_NAME} =my_domain_1.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} END,NE,R=permanent]
</VirtualHost>
但是,当我访问https://my_domain_1.com/gitweb/
时,出现404错误。错误日志什么也没说,我没有域的 .htaccess
。
我怎样才能让它发挥作用?
我找到了解决方案。
因为我要求所有 http
请求都应该重定向到 https
版本,所以我应该写 gitweb
设置而不是 <VirtualHost *:80>
(http)但在 <VirtualHost *:443>
(https) 中。结果应该是
<VirtualHost *:443>
DocumentRoot "/var/www/html1"
ServerName my_domain_1.com
# The lines are pasted here.
SSLCertificateFile /etc/letsencrypt/live/my_domain_1.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my_domain_1.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
现在完美运行了。
我有一个使用 VirtualHost
维护多个域的服务器,我正在尝试设置 GitWeb according to Gitweb - ArchWiki。
根据 wiki,我必须将以下行附加到 Apache 配置文件中。
Alias /gitweb "/usr/share/gitweb"
<Directory "/usr/share/gitweb">
DirectoryIndex gitweb.cgi
Options ExecCGI
Require all granted
<Files gitweb.cgi>
SetHandler cgi-script
</Files>
SetEnv GITWEB_CONFIG /etc/gitweb.conf
</Directory>
在此之后,Alias
工作,我可以通过访问
192.168.10.102/gitweb/(本地IP)
https://my_domain_1.com/gitweb/
https://my_domain_2.com/gitweb/
...
到目前为止,一切正常。
现在我想将 Alias
的效果限制在一个域中:my_domain_1.com
。所以我将上面的行移动到其现有的 VirtualHost
设置中。
<VirtualHost *:80>
DocumentRoot "/var/www/html1"
ServerName my_domain_1.com
# The lines are pasted here.
RewriteEngine on
RewriteCond %{SERVER_NAME} =my_domain_1.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} END,NE,R=permanent]
</VirtualHost>
但是,当我访问https://my_domain_1.com/gitweb/
时,出现404错误。错误日志什么也没说,我没有域的 .htaccess
。
我怎样才能让它发挥作用?
我找到了解决方案。
因为我要求所有 http
请求都应该重定向到 https
版本,所以我应该写 gitweb
设置而不是 <VirtualHost *:80>
(http)但在 <VirtualHost *:443>
(https) 中。结果应该是
<VirtualHost *:443>
DocumentRoot "/var/www/html1"
ServerName my_domain_1.com
# The lines are pasted here.
SSLCertificateFile /etc/letsencrypt/live/my_domain_1.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my_domain_1.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
现在完美运行了。