注意: 本章使用瀏覽器進行檢測的前提是在物理機hosts文件添加虛擬機IP和虛擬主機域名。php
[root@adailinux ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf …… <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <Directory /data/wwwroot/111.com> #指定認證的目錄 Allowoverride AuthConfig #該行至關於打開用戶認證的開關 AuthName "111.com user auth" #自定義認證的名字,做用不大 AuthType Basic #認證類型,通常爲basic AuthUserFile /data/.htpasswd #指定密碼文件所在位置(須要手動添加) require valid-user #設定須要認證的用戶爲「AuthUserFile」中定義的全部可用用戶 </Directory> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost>
[root@adailinux ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd adai New password: Re-type new password: Adding password for user adai [root@adailinux ~]# cat /data/.htpasswd adai:$apr1$F7lSqIT0$hEgMT0Nhuxh6.BpmLvi57/
即,在「/data/.htpasswd」爲用戶adai(自動建立)建立一個使用MD5算法加密的密碼文件。
注意: 只有在第一次建立該文件時加-c選項。html
[root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@adailinux ~]# curl -x192.168.8.131:80 111.com -I HTTP/1.1 401 Unauthorized Date: Mon, 31 Jul 2017 01:42:50 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 WWW-Authenticate: Basic realm="111.com user auth" Content-Type: text/html; charset=iso-8859-1
此時提示狀態碼爲「401」,說明當前所訪問的內容須要進行用戶認證。linux
使用用戶&密碼訪問:算法
[root@adailinux ~]# curl -x192.168.8.131:80 -uadai:123456 111.com -I HTTP/1.1 200 OK Date: Mon, 31 Jul 2017 02:18:21 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 X-Powered-By: PHP/5.6.30 Content-Type: text/html; charset=UTF-8
狀態碼「200」,即訪問成功。apache
用瀏覽器測試:vim
輸入用戶名「adai」和密碼後便可訪問:瀏覽器
htpasswd命令是Apache的Web服務器內置工具,用於建立和更新儲存用戶名、域和用戶基本認證的密碼文件。服務器
語法: htpasswd [option] [參數]
Options:
-c:=create,建立一個加密文件
-n:不更新加密文件,只將更新後的用戶名密碼顯示在屏幕上
-m:使用MD5算法對密碼進行加密(默認)
-d:使用CRYPT算法對密碼進行加密
-p:不對密碼進行加密,即明文密碼
-s:使用SHA算法對密碼進行加密
-b:在命令行一併輸入用戶名和密碼,而不是根據提示輸入密碼
-D:刪除指定用戶php7
對網站中指定文件設置用戶認證!curl
[root@adailinux ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com #<Directory /data/wwwroot/111.com> <FilesMatch 123.php> Allowoverride AuthConfig AuthName "111.com user auth" AuthType Basic AuthUserFile /data/.htpasswd require valid-user </FilesMatch> #</Directory> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost>
說明: 註釋掉< Directory >,取消對目錄設定的用戶認證,更改成< FilesMatch>,即對文件設定用戶認證。
[root@adailinux ~]# curl -x192.168.8.131:80 111.com welcome to 111.com [root@adailinux ~]# curl -x192.168.8.131:80 111.com/123.php -I HTTP/1.1 401 Unauthorized Date: Mon, 31 Jul 2017 03:04:31 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 WWW-Authenticate: Basic realm="111.com user auth" Content-Type: text/html; charset=iso-8859-1
說明: 此時能夠自由訪問「111.com」指定的目錄,可是當訪問目錄下的「123.php」文件時會報錯:401,即,須要進行用戶認證。
使用指定用戶名&密碼訪問:
[root@adailinux ~]# curl -x192.168.8.131:80 -uadai:123456 111.com/123.php welcom to 123file 成功!
使用瀏覽器檢測:
訪問 「111.com」:
訪問"111.com/123.php":
輸入指定用戶「adai」及密碼便可訪問:
301表示永久跳轉;302表示臨時跳轉。
SEO(Search Engine Optimization)搜索引擎優化,在瞭解搜索引擎天然排名機制的基礎上,對網站進行內部及外部的調整優化,改進網站在搜索引擎中的關鍵詞天然排名,得到更多流量,從而達成網站銷售及品牌建設的預期目標。
[root@adailinux ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf …… <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <IfModule mod_rewrite.c> #須要mod_rewrite的支持 RewriteEngine on #開啓rewrite功能 RewriteCond %{HTTP_HOST} !^111.com$ #Cond=condition,定義rewrite條件:全部非111.com的主機名(域名) RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] #定義rewrite規則:當知足上面條件時才執行當前規則,即跳轉到111.com。 </IfModule> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost>
[root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -M
在此檢查Apache是否加載了虛擬主機配置中調用的rewrite模塊,若是沒有加載,須要編輯Apache配置文件「httpd.conf」:
[root@adailinux ~]# vim /usr/local/apache2.4/conf/httpd.conf …… LoadModule rewrite_module modules/mod_rewrite.so LoadModule php5_module modules/libphp5.so #LoadModule php7_module modules/libphp7.so
即,去掉註釋符號「#」,加載rewrite模塊。
[root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite rewrite_module (shared)
使用curl檢測:
[root@adailinux ~]# curl -x192.168.8.131:80 www.example.com -I HTTP/1.1 301 Moved Permanently Date: Mon, 31 Jul 2017 07:17:37 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 Location: http://111.com/ Content-Type: text/html; charset=iso-8859-1
此時,狀態碼爲301,即設定了域名永久跳轉!
在瀏覽器進行檢測時,訪問「www.example.com」會直接跳轉到「111.com」。
日誌文件所在位置:
[root@adailinux ~]# ls /usr/local/apache2.4/logs 111.com-access_log abc.com-access_log access_log httpd.pid 111.com-error_log abc.com-error_log error_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common #h表示host來源IP,l表示login用戶,u表示user用戶密碼,t表示time時間,r表示request(行爲),s表示status狀態碼,b表示byte大小 #user-agent:用戶代理 #referer:跳轉到當前位置的上一個網址(即:提供當前IP的網站)
即:有combine和common兩種格式,默認使用common模式。
編輯虛擬主機配置文件「httpd-vhosts.conf」:
[root@adailinux ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" combined </VirtualHost>
說明: 將日誌文件後面原有 common改成combined。
從新加載:
[root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful
樣式:
[root@adailinux ~]# cat /usr/local/apache2.4/logs/111.com-access_log
在虛擬主機配置文件中加入以下內容便可:
php_admin_flag short_open_tag on
若是不開啓短標籤,服務器將沒法解析以下形式的PHP文件:
<? phpinfo() ?>
而只能解析:
<?php phpinfo() ?>
這種形式的PHP文件。