我正在更新当前使用HTTPS的域名,并且拥有许多用户每天都要连接的API。
我需要做的是,基本上将通过DNS /新服务器的所有流量重新路由到新域名。
EG
目前用户正在点击:https://olddomain.com/api我们现在正在使用https://newdomain.com/api所以我需要将https://olddomain.com/api的所有来电重定向,并将php POST数据保持原样https://newdomain.com/api < / p>
CNAME似乎没有使用帖子数据重定向它,并且它无法通过API调用。一些CNAME用于指向newdomain.com的olddomain.com,其中apache2 mod重写应该处理重定向,如果你导航到olddomain.com它会转发到newdomain.com但是POST数据不适用于某些原因。新服务器具有旧的和新的域SSL证书,因此应该有效。
这是我的000-default在/ etc / apache2 / sites-enabled / 000-default
中的样子<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName newdomain.com
ServerAlias newdomain.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^olddomain.com
RewriteRule ^/(.*)$ https://newdomain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.olddomain.com
RewriteRule ^/(.*)$ https://newdomain.com/$1 [L,R=301]
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride ALL
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride ALL
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>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName newdomain.com
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/apache2/ssl/certs/newdomain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/newdomain.key
SSLCertificateChainFile /etc/apache2/ssl/ssl_bundle.crt
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName olddomain.com
ServerAlias www.olddomain.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^olddomain.com
RewriteRule ^/(.*)$ https://newdomain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.olddomain.com
RewriteRule ^/(.*)$ https://newdomain.com/$1 [L,R=301]
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/apache2/ssl/certs/olddomain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/olddomain.key
SSLCertificateChainFile /etc/apache2/ssl/ssl_bundle.crt
DocumentRoot /var/www/
</VirtualHost>
答案 0 :(得分:0)
您是否尝试使用HTTP状态307(临时重定向)而不是301?根据{{3}},此方法将允许您保留重定向请求的原始HTTP方法(以及因此在POST情况下的关联主体),尽管标准还要求用户代理要求确认用户是非GET和非HEAD的。
例如,在Apache配置文件中,尝试替换如下行:RewriteRule ^ /(。*)$ W3C's HTTP/1.1 Status Codes Definitions $ 1 [L,R = 301]
由:
RewriteRule ^ /(。*)$ https://newdomain.com/ $ 1 [L,R = 307]
请注意,已报告某些用户代理不符合有关HTTP 307状态的标准(例如,不要求用户确认),而其他一些用户代理根本不理解它。因此,如果您选择使用此方法并在需要时查找回退机制,我建议您使用您定位的浏览器仔细测试它。