注意: 本章使用浏览器进行检测的前提是在物理机hosts文件添加虚拟机IP和虚拟主机域名。php
[root@1 ~]# 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@1 ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd adai New password: Re-type new password: Adding password for user zx [root@1 ~]# cat /data/.htpasswd zx:$apr1$F7lSqIT0$hEgMT0Nhuxh6.BpmLvi57/
即,在“/data/.htpasswd”为用户adai(自动建立)建立一个使用MD5算法加密的密码文件。
注意: 只有在第一次建立该文件时加-c选项。html
[root@1 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@1 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@1 ~]# 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@1 ~]# 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
输入用户名“zx”和密码后便可访问:浏览器
htpasswd命令是Apache的Web服务器内置工具,用于建立和更新储存用户名、域和用户基本认证的密码文件。服务器
语法: htpasswd [option] [参数]
Options:
-c:=create,建立一个加密文件
-n:不更新加密文件,只将更新后的用户名密码显示在屏幕上
-m:使用MD5算法对密码进行加密(默认)
-d:使用CRYPT算法对密码进行加密
-p:不对密码进行加密,即明文密码
-s:使用SHA算法对密码进行加密
-b:在命令行一并输入用户名和密码,而不是根据提示输入密码
-D:删除指定用户php7
对网站中指定文件设置用户认证!curl
[root@1 ~]# 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@1 ~]# curl -x192.168.8.131:80 111.com welcome to 111.com [root@1 ~]# 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@1 ~]# curl -x192.168.8.131:80 -uzx:123456 111.com/123.php welcom to 123file 成功!
使用浏览器检测:
访问 “111.com”:
访问"111.com/123.php":
输入指定用户“zx”及密码便可访问:
301表示永久跳转;302表示临时跳转。
SEO(Search Engine Optimization)搜索引擎优化,在了解搜索引擎天然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在搜索引擎中的关键词天然排名,得到更多流量,从而达成网站销售及品牌建设的预期目标。
[root@1 ~]# 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@1 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@1 ~]# /usr/local/apache2.4/bin/apachectl graceful [root@1 ~]# /usr/local/apache2.4/bin/apachectl -M
在此检查Apache是否加载了虚拟主机配置中调用的rewrite模块,若是没有加载,须要编辑Apache配置文件“httpd.conf”:
[root@1 ~]# 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@1 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@1 ~]# /usr/local/apache2.4/bin/apachectl graceful [root@1 ~]# /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@1 ~]# 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@1 ~]# 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@1 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@1 ~]# /usr/local/apache2.4/bin/apachectl graceful
样式:
[root@1 ~]# cat /usr/local/apache2.4/logs/111.com-access_log
在虚拟主机配置文件中加入以下内容便可:
php_admin_flag short_open_tag on
若是不开启短标签,服务器将没法解析以下形式的PHP文件:
<? phpinfo() ?>
而只能解析:
<?php phpinfo() ?>
这种形式的PHP文件。