我有一个 Debian 7 下的虚拟专用服务器。
在此服务器上,我有一个可以访问的网站,比如说https://www.monsiteweb.fr
我的 IP 地址是212.227.100.200我可以访问phpMyAdmin通过212.227.100.200/phpmyadmin
我想将写 monsiteweb.fr *.monsiteweb.fr 的人重定向到https://www.monsiteweb.fr。
问题是,当我执行此重定向时,我无法再访问 212.227.100.200/phpmyadmin,因为它会自动重写为htps://www.monsiteweb.fr/phpmyadmin(我写的是 htps 而不是 https,因为我无法在帖子上添加超过 2 个链接)
我怎样才能让 monsiteweb.fr *.monsiteweb.fr 重定向到htps://www.monsiteweb.fr但212.227.100.200没有重定向?
在/etc/apache2/sites-enabled/ 我有 3 个文件可能因为缺乏经验而被弄乱了:
文件 1:000-默认
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName monsiteweb.fr
ServerAlias monsiteweb.fr *.monsiteweb.fr
Redirect permanent / https://www.monsiteweb.fr
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
文件 2:monsiteweb.fr
NameVirtualHost *:443
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName monsiteweb.fr
ServerAlias monsiteweb.fr *.monsiteweb.fr
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName monsiteweb.fr
ServerAlias monsiteweb.fr *.monsiteweb.fr
SSLEngine On
SSLCertificateKeyFile /etc/apache2/ssl.certs/geotrust_privatekey_2016.key
SSLCertificateFile /etc/apache2/ssl.certs/geotrust_publickey_2016.crt
SSLCertificateChainFile /etc/apache2/ssl.certs/geotrust_intermediateca_2016.crt
DocumentRoot /home/monsiteweb/www/
<Directory /home/monsiteweb/www/>
Options -Indexes
AllowOverride All
</Directory>
</VirtualHost>
文件 3:default-ssl
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName monsiteweb.fr
ServerAlias monsiteweb.fr *.monsiteweb.fr
DocumentRoot /home/monsiteweb/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
答案1
首先,您应该能够使用以下方式访问 phpMyAdminhttp://127.0.0.1/phpMyAdmin或本地 IPhttp://192.168.0.100/phpMyAdmin(例如)。
现在,如果您想使用公共 IP 访问 phpMyAdmin,您必须考虑可能的安全问题。您至少可以限制对某些 IP 的访问并设置额外的授权。
您正在运行 VirtualHosts。这是一个基于名称的系统。如果有请求,系统将查找与请求匹配的 VirtualHost,并根据 ServerName 和 ServerAlias 进行查找。如果未找到名称,系统将自动使用默认虚拟主机 - 000-default.conf 和 default-ssl.conf 进行响应。
和http://你的公共IP/phpMyAdmin,Your_Public_IP 将从命名主机中搜索,显然它不会在那里找到它。因此它将使用默认虚拟主机(您已配置为提供服务)中的任何内容进行响应https://monsiteweb.fr)。
您提到,任何指向 monsiteweb.fr 的人都应被重定向到https://www.monsiteweb.fr。所以我猜你不希望人们使用http://你的公共IP也将被重定向到那里。
您可以配置一个简单的重定向:
<VirtualHost *:80>
ServerName *.monsiteweb.fr
Redirect 301 / https://www.monsiteweb.fr
</VirtualHost>
这将重定向除以下流量之外的所有流量:http://你的公共IP。如果您使用它来访问 phpMyAdmin,它应该已经可以工作了。