我正在运行 Debian 和 Apache。
我希望在我的开发服务器上创建一个新的开发环境。我们将其称为 dev2。当前开发服务器仅托管开发。我的生产服务器托管实时站点,可通过 访问*.example.com
。按照以下步骤设置dev2.example.com
自己的文档根目录后,dev2 的 URL 将转发到dev.example.com
,即开发服务器上的默认站点。
以下是我采取的步骤:
- 在我们的托管账户中,我们有一个 A 记录用于
www
指向生产服务器的 IP。另一个 A 记录用于指向dev.example.com
开发服务器,该 URL 会加载默认的开发网站。我创建了一个新的 A 记录,dev2
也指向开发服务器的 IP 地址。 - 我执行了 ping 操作
dev2.example.com
以确保它能正常工作并且没有数据包丢失。 - 我创建了一个新的文档根目录和一个虚拟索引:
/var/www/html/dev2/docroot/index.html
- 接下来,我
dev2.conf
在 中创建了一个文件/etc/apache2/sites-available
,并从 中创建了到它的符号链接/etc/apache2/sites-enabled
。 - 然后我运行命令
sudo a2ensite dev2.conf
并通过 重新加载 apacheservice apache2 reload
。最后,我清除了浏览器的缓存,当这不起作用时,我重新启动了 apache2。
我遗漏了什么?以下是文件的内容dev2.conf
。
<VirtualHost xxx.xxx.xxx.xxx:80>
ServerAdmin [email protected]
ServerSignature email
ServerName dev2.example.com
DirectoryIndex index.php index.html index.htm index.shtml
DocumentRoot /var/www/html/dev2/docroot
HostNameLookups off
RewriteEngine on
# Force SSL
RewriteCond %{HTTP_HOST} ^dev2\.example\.com$ [NC]
RewriteRule ^(.*)$ https://dev2.example.com$1 [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://dev2.example.com$1 [L,R=301]
# Force our domain name
RewriteCond %{HTTP_HOST} !^dev2\.example\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) https://dev2.example.com/$1 [L,R]
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/dev2/docroot>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
# For friendly URLs
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
编辑:我也尝试在 ServerName 下添加行,ServerAlias dev2.example.com
但没有成功。
答案1
根据您询问的实际域(现在已编辑,由 表示example.com
),您当前的配置有点混乱:
wget http://开发.example.com
--2017-03-14 22:20:03--http://dev.example.com/
正在解析 dev.example.com... 206.123.xxx.182
正在连接到 dev.example.com|206.123.xxx.182|:80... 已连接。HTTP
请求已发送,正在等待响应...301 永久移动
地址:https://开发2.example.com/ [关注]
由于某种原因, 上的纯 http 站点dev
重定向到 https 站点dev2
。大多数 Web 浏览器都会缓存永久重定向(301 响应),因此在测试您应用的每个配置更改时请务必小心。使用命令行工具进行测试,或对每个测试使用新的私人浏览器窗口...
wget http://开发2.example.com
URL 转换为 HTTPS由于 HSTS 政策
--2017-03-14 22:24:45--https://dev2.example.com/
正在解析 dev2.example.com... 206.123.xxx.182 正在连接到 dev2.example.com|206.123.xxx.182|:443... 已连接。HTTP
请求已发送,正在等待响应...302 已找到
地址:https://开发.example.com/ [关注]
该dev2
网站所做的事情与 不同dev
;应用 HSTS 策略重定向到 HTTPS,然后dev
发生重定向(在本例中为临时 302 重定向)。
总结来说:dev
正在重定向至dev2
并且dev2
正在重定向至dev
。
您不仅需要检查配置,dev2
还需要检查端口 80 上的普通 http 虚拟主机的配置dev
以及端口 443 上的 SSL 虚拟主机配置。