我想将所有传入的网址重定向到我的网站,以便用于规范化目的。
以下重定向条件应符合
我在httpd.conf中编写的当前重写规则如下所示
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
根据上述规则,我可以达到第1,第2和第4规则但第3规则对我不起作用。 欢迎任何建议。
答案 0 :(得分:1)
您网站的HTTPS和HTTP版本的定义必须(?)显示在不同的虚拟主机条目下(除非您在httpd前使用某些代理)。
这使得两个虚拟主机中的配置之间的差异变得容易。确保端口80和端口443的虚拟主机中的重定向配置相同
最简单的方法是使用Include
语句并引用两个虚拟主机定义中的公共文件
例如,将这些重写放在根配置dorectory中的文件base-rewrite.inc
中(debian / ubuntu中的/etc/apache2/base-rewrite.inc
; Redhat中的/etc/httpd/base-rewrite.inc
):
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
然后在您的虚拟主机定义中,Include
此文件:
<VirtualHost *:80>
# HTTP default virtualhost
ServerName www.example.com
DocumentRoot /var/www/html/
Include base-rewrite.inc
</VirtualHost>
<VirtualHost *:443>
# HTTPS default virtualhost
ServerName www.example.com
DocumentRoot /var/www/html/
# An example SSL config, but use your certificate files
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Include base-rewrite.inc
</VirtualHost>
这将使重写保持一致,并使其易于维护并立即更改它们
答案 1 :(得分:0)
如果您正在讨论针对搜索引擎优化目的的规范化,那么您还应该将此元标记添加到网页的主题部分:
<link rel="canonical" href="https://www.example.com/" />
这样做可以告诉搜索引擎,无论使用哪个网址到达此网页,这都是首选网址,也是应该编入索引的网址。