此處用戶認證的意思是:須要瀏覽器對用戶進行認證,認證成功後用戶才能瀏覽網站內容,php
使用場景1:對網站進行用戶認證apache
一、在虛擬主機配置文件中加入如下內容;vim
<Directory /data/wwwroot/www.123.com>瀏覽器
AllowOverride AuthConfigcurl
AuthName "123.com user auth"ide
AuthType Basic測試
AuthUserFile /data/.htpasswd網站
require valid-userui
</Directory>搜索引擎
二、生成密碼文件
# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd lijie
命令中的-c 表示建立,-m表示md5加密,/data/.htpasswd是密碼文件所在路徑,lijie是建立的用戶名
隨後系統兩次提示輸入密碼,運行結果以下:
上圖能夠看到密碼文件中出現了一行字符串,冒號左邊是用戶名,右邊就是md5加密後的密碼
咱們再建立一個用戶
# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd lj
此時命令中不須要-c建立的選項,能夠看到密碼文件中新增了用戶lj的加密後的密碼
三、從新加載配置
# /usr/local/apache2.4/bin/apachectl -t //檢查語法
# /usr/local/apache2.4/bin/apachectl graceful //從新加載
四、綁定主機
# curl -x127.0.0.1:80 111.com
上圖能夠看到,此時提示401錯誤
咱們再來看下401是什麼意思?
上圖能夠看到401提示須要作用戶驗證,
一樣的咱們在瀏覽器打開的界面以下圖:
出現上述現象輸入用戶名密碼進行驗證便可,Linux下用戶名密碼輸入方式以下
上圖輸入用戶名密碼後能夠看到狀態碼已經變成200 OK 表示認證成功
使用場景2:針對某個文件設置用戶認證
一、須要加入的內容以下:
<FilesMatch admin.php>
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
其中admin.php就是表示當匹配到這個文件時就須要作用戶驗證
二、從新加載配置
# /usr/local/apache2.4/bin/apachectl -t //檢查語法
# /usr/local/apache2.4/bin/apachectl graceful //從新加載
四、訪問主機及123.php
新增文件123.php
訪問主機# curl -x127.0.0.1:80 111.com -I
上圖咱們發現訪問主機不須要驗證用戶名和密碼就能成功登陸
可是當咱們訪問網站下的123.php頁面時就提示401錯誤,
# curl -x127.0.0.1:80 111.com/123.php -I
這時就須要進行用戶密碼驗證,以下
也叫域名重定向
使用場景:新舊域名的切換時,老用戶的習慣保留,網站的SEO排名,若是有兩個域名網站內容同樣的話,搜索引擎會認爲新的域名是冒牌貨,而把較高的權重給舊域名,可是咱們想使用新域名的話,就須要作一個域名重定向跳轉,而且給一個永久跳轉的狀態碼301,這時搜索引擎就會認爲舊域名不用了,而降下就域名的權重,將全部的權重給新域名
咱們要作的就是配置301跳轉
一、編輯虛擬主機配置文件
加入如下內容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^111.COM$
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
</IfModule>
命令中301表示永久重定向,另外有一個狀態碼302表示臨時重定向
二、從新加載配置文件
# /usr/local/apache2.4/bin/apachectl -t //檢查語法
# /usr/local/apache2.4/bin/apachectl graceful //從新加載
三、檢測apache是否加載重定向模塊rewrite
# /usr/local/apache2.4/bin/apachectl -M |grep rewrite //檢測是否加載
若是沒有加載,就須要手動去配置文件中加載
# vi /usr/local/apache2.4/conf/httpd.conf //編輯配置文件
搜索rewrite
去掉此行行首的#號
再次檢查rewrite模塊是否加載
上圖表示加載成功
四、測試域名跳轉是否成功
測試域名跳轉成功與否 1# curl -x192.168.31.157:80 www.111.com -I
測試跳轉URL 2# curl -x192.168.31.157:80 www.111.com
測試跳轉URL 3# curl -x192.168.31.157:80 www.111.com/213fdsffg
上面 測試URL不存在,但調轉是成功了的,只是咱們沒有寫這個頁面而已,提示的狀態碼是404,以下
換一個已經寫好的頁面,則提示200 OK ,說明域名跳轉成功
狀態碼403表示拒絕訪問,當httpd配置文件中的Require all granted被修改成Require all denied時就會出現此狀態提示
日誌目錄/usr/local/apache2.4/logs
查看域名跳轉實驗時候的logs以下
上圖中以HEAD開頭的表示是使用命令 curl 時留下的記錄,以GET開頭的表示的是加上-I時留下的記錄
但這個日誌格式比較簡單,咱們能夠先在主配置文件中查看下日誌格式
# vim /usr/local/apache2.4/conf/httpd.conf
修改下圖的LogFormat,框中引號內的參數,給咱們提供了common 和 combined兩種格式,默認使用的是common格式,咱們在上圖中看到的格式就是由下圖引號內的參數決定的
h : 來源IP
l:用戶
u:用戶
t: 時間
r:狀態碼
b:大小
User Agent :用戶代理,能夠是瀏覽器作代理或者使用curl命令訪問到網站,返回的內容是瀏覽器給的字段或curl相關給的字段
Referer:記錄瀏覽器上一次訪問的頁面,表示用戶是從哪一個頁面跳轉過來的
接下來咱們在虛擬主機配置文件中修改日誌格式
修改前:
修改後:
修改爲功後從新加載虛擬主機配置文件,再來訪問這個主機:
多訪問幾回後,咱們再來查看日誌
# /usr/local/apache2.4/logs/111.com/access_log
推薦連接
apache虛擬主機開啓php的短標籤 http://ask.apelearn.com/question/5370