我有一个Ubuntu服务器,其中有多个php应用程序在端口9999上运行Apache。
同时,同一服务器上的NodeJS应用程序在端口8080上运行,我使用apache的虚拟主机将请求从端口80或443重定向到我的NodeJS应用程序。
我的虚拟主机看起来像这样:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /ssl/example.com.pem
SSLCertificateKeyFile /ssl/example.com.key
SSLCACertificateFile /ssl/intermediate.pem
ServerAdmin webmaster@localhost
DocumentRoot /home/marcel/www/example
Options -Indexes
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyRequests on
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
&#13;
现在,对example.com的所有请求都应重定向到https://www.example.com。我有这个.htaccess文件。
Options -MultiViews
ErrorDocument 404 /404.html
<IfModule mod_rewrite.c>
Options +FollowSymlinks
# Options +SymLinksIfOwnerMatch
RewriteEngine On
# RewriteBase /
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
&#13;
我的问题:当我转到http://example.com时,我被重定向到https://example.com(没有www,但确定),我得到307重定向!我想要301的SEO原因。如果我做www.example.com =&gt;同样的事情会发生它转到https://www.example.com但也有307重定向。