我希望将所有传入的urlredirect到我的网站,以便为了规范化目的而将url转换为单个url。
redirect条件应符合
我现在用httpd.conf写的重写规则如下所示
RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
有了上述规则,我能够达到第一,第二和第四的规则,但第三条对我不起作用。 任何build议,欢迎。
您网站的HTTPS和HTTP版本的定义必须(?)显示在不同的虚拟主机条目下(除非您在httpd前面使用某个代理)。
这使得两个虚拟主机中的配置之间的差异变得很容易。 确保端口80和端口443的两个虚拟主机中的重定向配置相同
最简单的方法是使用Include
语句,并在两个虚拟主机定义中引用一个公共文件
例如把这些重写放在root配置文件中的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>
这将保持重写的一致性,并使其易于一次维护和更改
如果你正在谈论SEO的规范化,那么你也应该添加这个元标签到你的网页的头部:
<link rel="canonical" href="https://www.example.com/" />
这是告诉搜索引擎,无论使用何种网址到达这个网页,这是首选的网址和应该被索引的网址。