Site Loader

什么是301重定向?

页面永久性移走(301重定向)是一种非常重要的“自动转向”技术。网址重定向最为可行的一种办法。当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。

在我们网站建设中,时常会遇到需要网页重定向的情况:像网站调整,改变了网站的目录结构,网页被移到一个新地址。或者网页扩展名改变,如因应用需要把.php改成.html或.shtml,在这些情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失。又比如某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点。

当我们申请SSL证书构建https后,会出现http及https并存的情况,在Apache2虚拟目录配置文件中添加Redirect permanent并不能很好地解决全站http跳转https的问题。

这时,我们可以通过添加修改网站根目录下的.htaccess文件实现全站301重定向到https,而不止是主页。

开启Apache2重写模块rewrite:

###管理员身份运行
sudo a2enmod rewrite

###重启apache2服务
service apache2 restart

修改虚似目录配置文件,在<Directory /网站目录>与</Directory>之间添加AllowOverride All,如有AllowOverride None,改为AllowOverride All。然后执行service apache2 reload,重载一次配置。

<Directory /网站目录>
          Options FollowSymLinks MultiViews
          AllowOverride All
          Order allow,deny
          Allow from All
          Require all granted
</Directory>

添加或修改网站根目录下的.htaccess文件,插入修改如下代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
###…………
</IfModule>

至此,网站已可以实现全站http跳转https,包括内页。如直接访问http://www.himstudy.net/category/linux,可跳转到https://www.himstudy.net/category/linux。