分类 "服务器" 下的文章

近期由于系统需要配置301跳转,研究实施之余便整理了此篇文档,希望对需要的朋友有用。
配置步骤如下:
一、开启.htaccess文件
在apache的conf文件中,打开httpd.conf

1、把文档中所有的AllowOverride None全部的都给换成AllowOverride All
2、去掉下面的注释
LoadModule rewrite_module modules/mod_rewrite.so

二、htaccess 写法
1、Apache中的.htaccess是放在工程的根目录(www)中,而且在文件的权限还有一定的要求,所以像在linux和unix中的的时候,要设置相关权限,一般把.htaccess必需以ASCII模式上传,最好将其权限设置为644。
.htaccess文件内容如下:
多域名301跳转跳转到统一域名下的:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^PiaoYun1.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^www.PiaoYun1.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^PiaoYun2.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^www.PiaoYun2.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^PiaoYun3.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^www.PiaoYun3.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^PiaoYun.CC [NC]
RewriteRule ^(.*)$ http://www.PiaoYun.CC/$1 [L,R=301]
这些地址就会都以301重定向的方式跳转到 [L,R=301]
这些地址就会都以301重定向的方式跳转到http://www.PiaoYun.CC
以这样的方式重定向,GOOGLE会自动传递PR值到http://www.PiaoYun.CC这个地址上,避免了同一网站多个域名分散权重的情况,这也是我们对网站SEO需要注意的问题。

某一栏目301跳转:
RewriteCond %{REQUEST_URI} ^/kangle/
RewriteRule ^kangle/(.*) http://kangle.puercn.com/$1 [R=permanent,L]

RewriteCond %{REQUEST_URI} ^/puerchanews/open/ [NC]
RewriteRule ^/puerchanews/open/(.*) http://www.puercn.com/puerchanews/open/$1 [R=301,L]

1)将不带WWW的域名转向到带WWW的域名下:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^PiaoYun.CC[NC]
RewriteRule ^(.*)$ http://www.PiaoYun.CC/$1 [L,R=301]
非WWW的域名转向到带WWW的域名
RewriteCond %{HTTP_HOST} !^www.PiaoYun.CC [NC]

2)重定向到新域名:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.PiaoYun.CC/$1 [L,R=301]

3)使用正则进行301重定向,实现伪静态:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
将news.php?id=456这样的地址转向到news-456.html

4)二级域名指向指目录 如将cn.PiaoYun.CC指向 /zh_cn子目录
RewriteCond %{HTTP_HOST} ^cn.PiaoYun.CC [NC]
RewriteRule ^(.*) /zh_cn

Apache下vhosts.conf中配置301重定向
为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:

<VirtualHost *:80>
ServerName Www.PiaoYun.CC
DocumentRoot /home/PiaoYun.CC
</VirtualHost>
<VirtualHost *:80>
ServerName PiaoYun.CC
RedirectMatch permanent ^/(.*) http://Www.PiaoYun.CC/$1
</VirtualHost>

2、错误文档的定位
2.1常用的客户端请求错误返回代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
500 Internal Server Error

2.2利用.htaccess指定事先制作好的错误提醒页面。一般下,人们专门设立目录,例如errors放置页面。然后再.htaccess中,需要编写如下的指令:
ErrorDocument 404 /errors/notfound.html (命令[ErrorDocument],错误数,对应的界面)
ErrorDocument 500 /errors/internalerror.html
注意:一条指令一行。上述第一条指令的意思是对于404,也找到所的文档的得显示页面为/errors目录下的notfound.html页面。不难看出语法格局为:
ErrorDocument 错误代码 /目录名/名.扩展名

3、文档访问的密码保护
要利用.htaccess对某个目录下的文档设定访问和对应的密码,首先要做的是生成.htpasswd的文本文档,例如:
zheng:y4E7Ep8e7EYV
这里密码经由加密,找些工具将密码加密成.htaccess的编码。该文档最好不要放在工程的根目录下,建议放在工程根目录文档之外,这样更为安全些。
有了授权文档,在.htaccess中加入如下指令了:
AuthUserFile .htpasswd的器目录
AuthGroupFile /dev/null (授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)
require user wsabstract (允许访问的,但愿表中都允许,require valid-user)
注,括号部门为学习添加的注释

4、拒绝来自某个IP的访问
我不想某个IP访问到站点的,那.htaccess中加入该IP而将它们拒绝在外。
例如:
order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all
第一行开启如许和拒绝的功能,第二行拒绝某个IP,第三行拒绝某个IP段,也219.5.45.0~219.2.45.255
想要拒绝人?用deny from all好了。不止用IP,也用域名来设定。

5、保护.htaccess文档
在.htaccess来设置目录的密码保护时,它包含了密码的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的。虽然用其他做到这点,好比文档的权限。不外,.htaccess本身也能做到,只需加入如下的指令:

order allow,deny
deny from all

#下面的代码保护.htaccess不被下载
<Files ~ “^.htaccess”>
Order allow,deny
Deny from all
</Files>

6、URL转向

6.1:可能对重新规划,将文档了迁移,或者更改了目录。这,来自搜索引擎或者其他链接过来的访问就可能犯错。这种下,如下指令来完成旧的URL自动转向到新的:
Redirect /旧目录/旧文档名 新文档的
或者整个目录的转向:
Redirect 旧目录新目录
6.2:改变缺省的首页
一般下缺省的首页名有default、index等。不外,有些目录中没出缺省,而是某个特定的名,好比在pmwiki中是 pmwiki.php。这种下,要记住名来访问很麻烦。在.htaccess中等闲的设置新的缺省名:
DirectoryIndex 新的缺省名
也列出多个,顺序表明它们之间的优先级别,例如:
DirectoryIndex filename.html index.cgi index.pl default.htm

6.3:防止盗链(界面跳转或301,302跳转)
不喜欢别人在的网页上连接的、文档的话,也htaccess的指令来做到。
所的指令如下:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?PiaoYun.CC/.*$ [NC]
RewriteRule .(gif&line;jpg)$ http://Www.PiaoYun.CC/替代名 [R,L]
此处的配置是正则表达式的形式来实现了!

关键错误:You don't have permission to access / on this server
打开网页,结果访问提示:403错误!关闭了IE的"显示友好的HTTP错误",显示没有权限访问(You don't have permission to access / on this server)!
我想着大概是没有权限去访问该目录,因为一般情况下,NTFS对访问权限控制的很严格的!
于是打开目录,一看,访问权限居然是everyone的完全控制!那用户在文件夹访问权限上是绝对没有问题了!肯定是apache的配置问题了,于是上网搜索,找到如下相关信息用于修改权限.
以下为引用的内容:

<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>

根据配置文件提示,此设置是用于修改Apache对所有目录的访问权限的,如果任意修改,可能会带来安全隐患的!那我们来看看到底是什么在作祟,让我们无法访问网页的吧!
Deny from all 有点英文基础的都可以看的出来,这里是关键:拒绝所有!
将Deny改为Allow试试!
(因为可能会存在大小写敏感的问题,所以推荐用首字母大写,有兴趣的可以自己尝试小写!)一下通过了,但是这样配置的话服务器安全性会...
于是我继续往下看配置文件!
发现了以下内容
#
# This should be changed to whatever you set DocumentRoot to.
#
以上这行注释的意思:无论你的服务器根目录设置为什么,你都必须保证此处配置保持一致!
以下为引用的内容:

<Directory "默认目录">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>

再将以上的"默认目录"设置为"目标目录",(当然已经将对所有权限访问的设置修改为拒绝了!)刷新一下页面,OK,通过了!

 20131030033339_01

要登录这台远程计算机,您必须被授予允许通过终端服务器登陆权限。默认情部下,"管理员"组的成员拥有该权限。如果您不是“管理员”组或其他拥有该权限的组的成员,或者如果“管理员”组没有该权限,您必须被手动授予该权限。

在Windows设置→安全设置→本地策略→用户权利分配“通过终端服务拒绝登陆”中,不能加入Users组,加入了就不能访问。删除后就可以正常访问。
1. "控制面板" --> "管理工具" --> "终端服务配置"
2. 点击"连接", 右边出现连接项(例如: RDP-Tcp,tcp,Microsoft RDP 5.2)
3. 双击要修改的连接项。
3. 弹出窗口, 单击"权限"选项卡。
4. 单击"高级",然后单击"添加"。
5. 指定要添加的用户或组,使该用户或组能够使用“远程控制”。
6. 添加用户或组之后,将显示权限项 对话框。单击“远程控制”的允许 列,将其选中。
7. 单击确定。
8. 单击确定,再次单击确定。

如果服务器正常,本错误往往发生在提交一个很大的字符串时发生。原因就是在处理如此“巨大”的字符串提交请求时,服务器处理超时了。可以通过设置fcgiext.ini里面的超时配置和php.ini里的超时配置来解决。当然,根据个人对服务器设置的不同,可能还需要修改更多配置信息。比如允许一次性提交多少数据。

FastCGI Error
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------
Error Details:
?The FastCGI process exceeded configured activity timeout
?Error Number: 258 (0x80070102).
?Error Description: μè′yμ?2ù×÷1yê±?£
HTTP Error 500 - Server Error.
Internet Information Services (IIS)
大概给该网站建立一个独立的应用程序池也可以解决某些因此原因导致的问问题。

在fcgiext.ini里的关于php的配置信息如下:

[Types]
php=PHP
[PHP]
ExePath=D:\PHP\php-cgi.exe
InstanceMaxRequests=10000
ActivityTimeout=600
RequestTimeout=600
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:D:\PHP\

里面的数字可以自行调整。
上面的提示,即配置文件里的ActivityTimeout=600 这个时间超时。但不一定就是这个原因引起的。

解决方法:
配置php.ini:
max_execution_time = 3000
默认是30,后改成300,PHP报超时错,改成3000

需要在IIS和apache同时调试好静态重写的规则,发现调试rewrite规则真是个神一样的工作,你根本就不知道它到底怎么翻译的,解析到哪里去了。
在网上搜了一下,发现一个朋友在apache下开启了配置文件中的以下两个选项

RewriteLog "/myfolder/mylogfile.log"
RewriteLogLevel 9

这样apache可以自动生成一个重写日志,看着日志调试就方便了
Rewriteloglevel 0 代表关闭,9代表开启最大debug输出,调为9可以看到最详细的重写匹配信息
可是IIS环境呢,这个有点麻烦,于是我用网上搜的一个log类来做日志
大致原理是这样的,在网站的index.php这里写一段

$log = new log("/logs/sys.log");
$log->logThis($_SERVER["REQUEST_URI"]);

$_SERVER["REQUEST_URI"] 是重写的实际执行页面
/logs/sys.log也可以写成别的地址,比如你网站根目录的一个地址,这样你可以通过浏览器来查看日志了

这样的日志结果会是这样的效果
2012-02-28 16:27:04 115.174.56.7 /index.php?action=list&catid=4&pageid=3
2012-02-28 16:27:06 115.174.56.7 /index.php?action=list&catid=7&pageid=6
2012-02-28 16:27:08 115.174.56.7 /index.php?action=list&catid=13&pageid=2
有了日志调试,规则就不再是问题了。

".htaccess"文件往往被网页设计师们忽略。假如你还不知道什么是htaccess的话,你可以去查一下wikipedia。它是目录级别的配置文件,有常用的网页服务器支持这种配置,例如Apache。下面我将列出10条有用的.htaccess配置技巧。

1、反盗链
那些盗用了你的内容,还不愿意自己存储图片的网站是无耻的。你可以通过以下配置来放置别人盗用你的图片:
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?piaoyun.cc/.*$ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

 

2、防止目录浏览
有时候目录浏览是有用的,但大部分情况会有安全问题。为了让你的网站更安全,你可以通过htaccess文件来禁用这个功能:
Options All -Indexes

 

3、SEO友好的301永久重定向
这一招是我常用的。每次我更改网站URL结构的时候,我都会做301重定向:
Redirect 301 http://www.piaoyun.cc/article.html http://www.piaoyun.cc/archives/article

 

4、显示个性化的 404 错误页面
当用户访问了一个不存在的页面的时候,网页服务器会显示"404 file not found"错误。有很多CMS可以让你设置自定义的错误页面,但最简单的方法是更改htaccess:
ErrorDocument 404 /404.html

 

5、设置目录的默认页面
假如你需要为不同的目录设置不同的默认页面,你可以很容易的通过 .htaccess 实现:
DirectoryIndex about.html

 

6、基于referer来限制网站访问
站长通常不会限制网站访问,但是当你发现有一些网站尽给你带来垃圾流量的话,你就应该屏蔽他们:
<IfModule mod_rewrite.c>
RewriteEngine on  RewriteCond %{HTTP_REFERER} piaoyun.cc [NC,OR]
RewriteCond %{HTTP_REFERER} piaoyun.cc [NC,OR]
RewriteRule .* – [F]
</ifModule>

 

7、限制PHP上传文件大小
这招在共享空间的服务器上很有用,可以让我的用户上传更大的文件。第一个是设置最大的上传文件大小,第二个是设置最大的POST请求大小,第三个PHP脚本最长的执行时间,最后一个是脚本解析上传文件的最长时间
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200

 

8、压缩文件
你可以通过压缩文件来减少网络流量,也页面装载时间:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

 

9、缓存文件
这一点还需要解释吗?
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
HeadersetCache-Control "max-age=2592000″
</FilesMatch>

 

10、添加尾部的反斜杠
我并不确定,但是很多文章,很多人都说添加尾部反斜杠有益于SEO:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>

利用.htaccess文件做301重定向.

1.重定向PiaoYun.CC到Www.PiaoYun.CC
这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向Www.PiaoYun.CC到PiaoYun.CC也是出于同样的原因,只是形式不同。
打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改)

RewriteEngine On
rewritecond %{http_host} ^PiaoYun.CC [NC]
rewriterule ^(.*)$ http://Www.PiaoYun.CC/$1 [R=301,NC,L]

2.重定向Www.PiaoYun.CC到PiaoYun.CC
RewriteEngine On
rewritecond %{http_host} ^Www.PiaoYun.CC [NC]
rewriterule ^(.*)$ http://PiaoYun.CC/$1 [R=301,NC,L]

3.重定向oldPiaoYun.CC到Www.PiaoYun.CC
RewriteEngine On
rewritecond %{http_host} ^oldPiaoYun.CC [NC]
rewriterule ^(.*)$ http://Www.PiaoYun.CC/$1 [R=301,NC,L]

4.重定向oldPiaoYun.CC to PiaoYun.CC
RewriteEngine On
RewriteBase /
rewritecond %{http_host} ^PiaoYun.CC [NC]
rewriterule ^(.*)$ http://PiaoYun.CC/$1 [R=301,NC,L]

5.重定向PiaoYun.CC/file/file.php 到 otherPiaoYun.CC/otherfile/other.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^PiaoYun.CC$
RewriteRule ^file/file.php$ http://Www.otherPiaoYun.CC/otherfile/other.php [R=301,L]

最后一个代码,是 设置了默认首页排序跟301转向的. (不带www的域名转向到带www的域名.)
<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
DirectoryIndex index.html index.htm index.php
order deny,allow

RewriteEngine On
RewriteCond %{HTTP_HOST} !^Www.PiaoYun.CC$ [NC]
RewriteRule ^(.*)$ http://Www.PiaoYun.CC/$1 [L,R=301]

需要注意的是:
php的301跳转可能导致 子目录绑定的域名也被301跳转.  强烈建议301的.htaccess写上后测试下子目录绑定的域名是否被跳转.
godaddy后台中可以用 site redirect做不带www域名的301跳转.

其实网上的方法也正确,只是在注册PHP到FastCGI时内容不全。新版本的PHP5.3通过以往老方法已经不能在IIS上安装了(因为现在php 5.3已经不支持ISAPI了,而是用FastCGI了),现在给出在IIS上安装PHP5.3以后版本的教程。
首先肯定是安装IIS了,然后下载并安装IIS FastCGI,下载地址:http://www.iis.net/download/fastcgi。选择 x86或者download x86,下载下来名称为fcgisetup_1.5_rtw_x86.msi。如下图:
20131029085944_01
IIS FastCGI安装成功后会在C:\WINDOWS\system32\inetsrv\目录下多出来5个文件,如下图:
20131029085944_02

这个时候在IIS 6的"WEB服务扩展"里就多出了一个FastCGI Handler。
20131029085944_03
再下载安装IIS下的PHP5.3.8,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限。
下面是要配置和修改的内容:
如果你的PHP5.3.8是安装版(即以.msi结尾的)安装完所有的软件就可以直接测试运行,安装过程中已经帮你配置完成。
如果你的PHP5.3.8是压缩版(即以.zip结尾的)安装完后要作以下配置。
1、环境变量修改。我的电脑》属性》高级》环境变量》系统变量 Path=D:\PHP\;(加到最前面,如果没有可以自己建一个。)
2、FastCGI安装目录内的修改(注册PHP到FastCGI)
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini文件,在文件最后加上下面的语句:

[Types](这个是文件原来就有的,在[Types]后面加上下面的语句就可以,要全部哦不然会报错的。)
php=PHP
[PHP]
ExePath=D:\PHP\php-cgi.exe
InstanceMaxRequests=10000
ActivityTimeout=900
RequestTimeout=500
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:D:\PHP\

3、PHP.ini的修改PHP5.3.8安装目录下是没有PHP.ini这个文件的,只有php.ini-development和php.ini-production,我们把php.ini-development改为php.ini(当然如果你怕有错可以先备份一下)。

注明:首先建一个文件夹命名为TMP,位置随意我这里放在D:\PHP\tmp。 (upload_tmp_dir会用到,upload_tmp_dir是用来定义上传文件存放的临时路径,这里可以修改并给它定义一个绝对路径,同时需要有读、写权限。)。用搜索(快捷键:Ctrl+F)的方式把下面的关键字改成现在的值:

short_open_tag = Off (这个它本来默认就是这样我们就不要改了。)

找到:
;upload_tmp_dir =
修改为:
upload_tmp_dir="D:\PHP\tmp"
以下的是修改运行fastcgi模块参数。
找到:
;cgi.force_redirect = 1修改为:
cgi.force_redirect= 0

 

找到:
;cgi.fix_pathinfo = 1;
修改为:
cgi.fix_pathinfo =1;

 

找到:
;fastcgi.impersonate = 1;
修改为:
fastcgi.impersonate= 1;

 

找到:
;extension_dir = "ext"
修改为:
extension_dir="D:\PHP\ext"

 

找到:
;date.timezone =
修改为:
date.timezone = PRC (如果不修改date.timezone,打开网页的时候蛮有可能提示500错误。也有人把值改为Asia/Shanghai,我没试过你们可以试试。)

在Windows Extensions中去除扩展前面的分号(;):

;extension=php_curl.dll
;extension=php_gd2.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_exif.dll
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_sockets.dll
;extension=php_xmlrpc.dll

4.Internet信息服务(IIS)管理器的修改

1)网站》属性》主目录》配置》添加可执行文件=C:\WINDOWS\system32\inetsrv\fcgiext.dll。扩展名= .php。动作》限制为=GET,HEAD,POST,TRACE。整个操作如图:
20131029085944_04
20131029085944_05
20131029085945_06
20131029085945_07

2)网站》属性》文档》添加默认内容=index.php。这里全部配置好了,一定要把IIS服务重启一下。

5、测试(一定要重启IIS服务)最后用文本写一段测试代码:

<?php
phpinfo();
>

保存为index.php,名字随便取只要后缀是.php就可以。把index.php(你写的文件)放到根目录下,我这里是C:\Inetpub\wwwroot,然后在浏览器中输入http://127.0.0.1/index.php或http://localhost/index.php(两者随便一个就可以效果一样)就可以得到返回的信息了。返回的信息,如图:
20131029085945_08

我们在IIS站点属性里面设置了自定义的404错误页面为一个文件之后,不知道为什么一直不生效,总是提示这样一句话:系统找不到指定的文件。
其实这种错误也只是在某些网站程序中出现,特别是一些纯php 的网站程序,其实解决办法很简单
由于IIS的普通用户没有访问指定的404.html页面的权限,造成了自定义的404错误页面无法显示,我们只要赋予指定的404.html页面USER用户组具有读的权限权限,就可以解决此问题。
我被 系统找不到指定的文件 这个错误提示搞得快发疯了,突然想到了这个办法,问题迎刃而解。

[caption id="attachment_29" align="aligncenter" width="382"]IIS自定义404错误页面提示系统找不到指定的文件问题解决方案 IIS自定义404错误页面提示系统找不到指定的文件问题解决方案[/caption]

今天服务器恢复了下系统备份呢,重新设置站点一直出现401.1的错误信息呢!
网上查询了下。找到了部分解决的办法呢!

网上查询到的解决办法如下:
由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。
解决方案:
(1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用:
控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。
(2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限,如果没有尝试用以下步骤赋予权限:
开始->程序->管理工具->本地安全策略->安全策略->本地策略->用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。
注意:一般自定义 IIS默认匿名访问帐号都属于组,为了安全,没有特殊需要,请遵循此规则。
在这里要把IIS用户组给添加进去就可以了。

终于看到了。。。。哎。这人啊。伤心!

 

2、错误号401.2
症状:HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。
原因:关闭了匿名身份验证
解决方案:
运行inetmgr,打开站点属性->目录安全性->身份验证和访问控制->选中“启用匿名访问”,输入用户名,或者点击“浏览”选择合法的用户,并两次输入密码后确定。

 

3、错误号:401.3
症状:HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
原因:IIS匿名用户一般属于Guests组,而我们一般把存放网站的硬盘的权限只分配给administrators组,这时候按照继承原则,网站文件夹也只有administrators组的成员才能访问,导致IIS匿名用户访问该文件的NTFS权限不足,从而导致页面无法访问。
解决方案:
给IIS匿名用户访问网站文件夹的权限,方法:进入该文件夹的安全选项,添加IIS匿名用户,并赋予相应权限,一般是读、写。

初次接触PHP环境,自己手动配置apache与php,遇到httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.1.xx for ServerName这个问题,百度和谷歌后发现基本上都是同样内容的答案,如下内容是在网上找到的

---------------------------------------以下内容是在网上找到的--------------------------------------------

前言:apache虽然能运行,但是看见error.log中有httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.1.xx for ServerName这个错误,想看看是否有其他占用了80端口

开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列"

经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用

假如我们需要确定谁占用了我们的80端口

1、Windows平台
在windows命令行窗口下执行:

C:\>netstat -aon|findstr "80"
TCP     127.0.0.1:80         0.0.0.0:0               LISTENING       2448

看到了吗,端口被进程号为2448的进程占用,继续执行下面命令:

C:\>tasklist|findstr "2448"
thread.exe                     2016 Console                 0     16,064 K

很清楚吧,thread占用了你的端口,Kill it

如果第二步查不到,那就开任务管理器,看哪个进程是2448,然后杀之即可。
如果需要查看其他端口。把 80 改掉即可

补充:原来出现这个错误原因(httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.1.xx for ServerName)是因为DNS没配置好. 如果不想配置DNS, 就在httpd.conf , 在最前加入 ServerName localhost:80 即可

我就不明白了,上面出的error,为什么大篇幅的介绍查找谁占用端口?并且就这内容,还在网上成了“模板”,不知被多少人转到了自己的博客中去,是不是现在都流行恶趣味?

其实这个问题,解决的方法就是补充中的一句话,修改httpd.conf中的ServerName IP:port与Listen IP:端口一致就OK了。

-----------------------------------------以上内容是在网上找到的-----------------------------------------

我自己的解决办法是这样解决的:
在apache配置文件:httpd.conf 的顶部添加这句代码:ServerName localhost:80
然后在虚拟机配置文件:httpd-vhosts.conf 里面做如下修改:

<VirtualHost *:80>
    ServerAdmin webmaster@default
    DocumentRoot "C:/wwwroot/"
    ServerName default
    ErrorLog "logs/dummy-default-error.log"
    CustomLog "logs/dummy-default-access.log" common
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    allow from all
</Directory>
</VirtualHost>

修改上面代码中这个部分,把*修改为:localhost
修改之后的代码如下:

<VirtualHost localhost:80>
    ServerAdmin webmaster@default
    DocumentRoot "C:/wwwroot/"
    ServerName default
    ErrorLog "logs/dummy-default-error.log"
    CustomLog "logs/dummy-default-access.log" common
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    allow from all
</Directory>
</VirtualHost>

按照上面的修改步骤修改后,重新运行apache的服务就不会再次提示:
httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.1.xx for ServerName
错误了!

以前只是看的枯燥的文字版的服务器返回状态码.
现在,看一张比较形象的图解,希望能增强记忆.点击图片看大图.
HTTP 400 – 请求无效
HTTP 401.1 – 未授权:登录失败
HTTP 401.2 – 未授权:服务器配置问题导致登录失败
HTTP 401.3 – ACL 禁止访问资源
HTTP 401.4 – 未授权:授权被筛选器拒绝
HTTP 401.5 – 未授权:ISAPI 或 CGI 授权失败
HTTP 403 – 禁止访问
HTTP 403 – 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost
HTTP 403.1 禁止访问:禁止可执行访问
HTTP 403.2 – 禁止访问:禁止读访问
HTTP 403.3 – 禁止访问:禁止写访问
HTTP 403.4 – 禁止访问:要求 SSL
HTTP 403.5 – 禁止访问:要求 SSL 128
HTTP 403.6 – 禁止访问:IP 地址被拒绝
HTTP 403.7 – 禁止访问:要求客户证书
HTTP 403.8 – 禁止访问:禁止站点访问
HTTP 403.9 – 禁止访问:连接的用户过多
HTTP 403.10 – 禁止访问:配置无效
HTTP 403.11 – 禁止访问:密码更改
HTTP 403.12 – 禁止访问:映射器拒绝访问
HTTP 403.13 – 禁止访问:客户证书已被吊销
HTTP 403.15 – 禁止访问:客户访问许可过多
HTTP 403.16 – 禁止访问:客户证书不可信或者无效
HTTP 403.17 – 禁止访问:客户证书已经到期或者尚未生效
HTTP 404.1 – 无法找到 Web 站点
HTTP 404 – 无法找到文件
HTTP 405 – 资源被禁止
HTTP 406 – 无法接受
HTTP 407 – 要求代理身份验证
HTTP 410 – 永远不可用
HTTP 412 – 先决条件失败
HTTP 414 – 请求 – URI 太长
HTTP 500 – 内部服务器错误
HTTP 500.100 – 内部服务器错误 – ASP 错误
HTTP 500-11 服务器关闭
HTTP 500-12 应用程序重新启动
HTTP 500-13 – 服务器太忙
HTTP 500-14 – 应用程序无效
HTTP 500-15 – 不允许请求 global.asa
Error 501 – 未实现
HTTP 502 – 网关错误
20131028073924_01