解決apache服務器不能重定向,不能強制跳轉https並且.htaccess失效等問題
apache不能重定向,.htaccess被關閉
在centos系統下一鍵安裝apache服務后,在網站根目錄下建立.htaccess文件,想通過.htaccess文件實現apache的重定向。但是發現無論怎么更換.htaccess的代碼,都不能重定向。這時候就需要檢查.htaccess是否被關閉。
- 打開apache的配置文件
vim /etc/httpd/conf/httpd.conf
- 檢查配置文件
AllowOverride Node #338行附近
#修改為
AllowOverrlid All #打開.htaccess
.htaccess打開后,還是不能訪問可以檢查文件名稱是否正確。
AccessFileName .htaccess #409行附近,檢查AccessFileName后面的文件名是否正確,可自定義
- 修改完成后,需要重啟服務器
service https restart #重啟服務器
實現強制跳轉https
要想實現強制跳轉https,一般是通過301重定向實現的。針對服務器管理員和網站管理員有以下不同的方法。
- 在配置文件中增加跳轉代碼
#在apache配置文件中增加下面代碼
<VirtualHost *:80>
ServerAdmin ASorb
DocumentRoot /var/www/html/wordpress #網站目錄
ServerName www.orbpi.cn #修改為自己的域名
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
#添加后需要重啟服務器
service httpd restart
- .htaccess文件實現(使用前請按照上述方法確定.htsccess是否處於打開狀態)
在網站根目錄下建立.htaccess文件,將下面代碼寫入.htsccess文件中。( 重要提示:必須將代碼放到.htaccess文件內容的最前面,以保證重定向優先權。)
#代碼如下:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.orbpi.cn/$1 [R,L]
#或者
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.orbpi.cn/$1 [R=301,L]
#又或者
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
#注意:如果是在子目錄,可以用
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} subfolder
RewriteRule ^(.*)$ https://www.orbpi.cn/subfolder [R,L]
效驗是否成功跳轉
檢驗是否能夠重定向最簡單的方法就是通過瀏覽器的訪問,首先在瀏覽器中訪問http://你的網址/,等待響應后,看網址是否變成https://你的網址/,如果發生改變就說明跳轉成功,否則失敗。有時候不能跳轉可能不是服務器的配置問題,有可能是本地瀏覽器的緩存問題。例如谷歌瀏覽器就有緩存機制,所以在驗證的時候可以先清除緩存在進行效驗。
END
參考:百度百科
文章僅代表作者個人觀點,轉載請注明出處!
文章地址:https://www.orbpi.cn/article/apachebunengchongdingxiangbunengqiangzhitiaozhuanhttpshtaccessshixiaojiejuebanfa.html