通过.htaccess设置你的网站只允许来自中国IP的访问
哈哈大侠 记录于 2010年12月5日如果你希望自己的网站只能中国人访问,那么这绝对是一个很好的方法,这个.htaccess的规则限定了只有中国IP才能打开你的网站,非常方便的限制了非中国IP的访问 阅读全文 »
如果你希望自己的网站只能中国人访问,那么这绝对是一个很好的方法,这个.htaccess的规则限定了只有中国IP才能打开你的网站,非常方便的限制了非中国IP的访问 阅读全文 »
作为网站管理员,我们不希望存放在服务器上的某些文件夹内的文件的被未经授权访问者获取,所以我们需要一个有效的方法来限制某些文件夹的访问。也许你会问:常见的用php或其它语言编写的网站前台用户注册和登录系统不是已经限制用户可以进入哪些页面和使用什么功能吗?但是,这一类的认证机制只对这些语言编写出的文件有效(而且前提是你已把认证的代码嵌入该文件),但这一类认证机制并不能保护你网站上的图片、文档以及其它类型文件不被他人获取,访问者或黑客还是可以通过url直接获取到你存放在某个文件夹内的文件。
有什么简单的方法可以让我们灵活地控制文件夹的访问呢?有个方法很简单,通过Apache的.htaccess和.htpasswd给文件夹加上用户密码认证就可以了。操作起来还很简单呢,因为apache服务器已经提供了丰富的认证支持,我们只需要制作两个文件.htaccess和.htpasswd(注意前面带有一个点)。
注意:由于.htaccess文件名结构较特别,在Windows系统内无法创建文件名为.htaccess的文件(Windows Vista和Windows 7是可以创建这种文件名的,但是这之前的系统应该是不可以的),唯有的办法是在文本编辑器中写好.htaccess文件内容,保存,上传(ASCII传输方式)至站点服务器,然后在FTP中重命名上传文件为.htaccess即可。
.htaccess文件
AuthType Basic
AuthName "restricted area"
AuthUserFile /usr/virtual/default/www.x2009.net/conf/.htpasswd
require valid-user
第一行的AuthType指的是采用的认证方式,在这里我们选择的是一般的Basic,要注意的是,Basic认证方式传输密码过程是不加密的,更安全的方式是Digest,但Digest认证方式需要mod_auth_digest模块的支持,使用前最好先通过检查一下服务器是否已经开启该模块;第二行的AuthName记录的认证名称,会显示在认证询问框上,如果存在多个认证,认证名称可以让你更清楚当前认证该输入什么用户名和密码,遗憾的是认证名称似乎不支持中文;第三行,输入存放用户密码的认证文件路径。
.htpasswd文件
outwego.com:123456
outwego.net:654321
outwego:12tir.zIbWQ3c
在.htpasswd文件我们记录下授权用户的账号名和密码,冒号前的是账号名,冒号后的则是密码,一行记录一条授权用户信息,不要多,如果你不想密码明文显示出来,可以用MD5加密一下,网上有这样的工具,第三行代码就是密码123456加密后的效果。
test.php
<?php phpinfo(); ?>
注意:.htpasswd文件可以放在任意一个文件夹,只要在.htaccess里设置相应的位置就可以了,然后你要保护哪个文件夹,就把.htaccess放在那个文件夹就好了,以后任何人访问那个网址都会被询问用户名和密码。
前言:本人用了phpnow、apm、WampServer等大部分集成Apache、php、mysql的软件,想完全的支持asp,都没有做成功,但是有相关的资料,和大家分享。有一个插件ActiveHTML支持asp,但是我试了,也不好用,总之太麻烦了,所以后来还是用的IIS+php+mysql(请看我的本分类中的另一篇文章)。如果不使用asp当然就非常容易了,而且很好用,但是我还是想使用asp,折腾了一天多,还是没戏,能运行,但是有的只支持一个asp网站,有的有其它问题,郁闷啦!不玩了!如果哪位高手有好的方法使之完美支持asp,请告知,不胜感激!
注解:
本文是基于WampServer 2.X套件讨论的,但适用于所有的Apache。其实我们也只是对WampServer中的Apache模块做了修改,使其能够支持ASP/ASP.NET。本文中Apache版本为2.2.8,WampServer 的目录地址为D:\wamp\ 。文中提及的配置文件.conf 及其mod,ActiveHTML,于文末提供下载。
ASP.NET
让Apache支持ASP.NET比较简单,使用apache.org里提供的mod_aspdotnet即可。地址是:http://httpd.apache.org/modules/ 。
说一下配置:首先下载mod_aspdotnet 。然后将其mod_aspdotnet.so释放到apache 的/modules/ ,如D:\wamp\bin\apache\apache2.2.8\modules 。然后,我们需要建立一个mod_aspdotnet 单独的配置文件.conf,如httpd-aspdotnet.conf,写好后放入apache的/conf/extra/中,这样比较规范。httpd-aspdotnet.conf,如下
XML/HTML代码
1. # Load asp.net module
2. LoadModule aspdotnet_module "modules/mod_aspdotnet.so"
3.
4. # Set asp.net extensions
5. AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
6.
7. # 其中"D:/wamp/www/aspx" 为我们的ASPX的文件的目录。需自己修改。:)
8. <IfModule mod_aspdotnet.cpp>
9. # Mount the ASP.NET /ASP application
10. AspNetMount /ASP "D:/wamp/www/aspx"
11.
12. # Map all requests for /ASP to the application files
13. Alias /ASP "D:/wamp/www/aspx"
14.
15. # Allow asp.net scripts to be executed in the /ASP folder
16. <Directory "D:/wamp/www/aspx">
17. # Set asp.net options
18. Options Indexes FollowSymLinks Includes +ExecCGI
19. # Set asp.net permissions
20. Order allow,deny
21. Allow from all
22. # Set asp.net default index page to .aspx and .htm
23. DirectoryIndex index.aspx index.htm
24. </Directory>
25.
26. # Set aspnet_client files to serve the client-side helper scripts. 这里为我们的ASP.NET_Framework的安装地址,需自己修改。
27. AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/WINDOWS/Microsoft.NET/Framework/v3.5/ASP.NETClientFiles/$4"
28. <Directory "C:/WINDOWS/Microsoft.NET/Framework/v3.5/ASP.NETClientFiles">
29. Options FollowSymlinks
30. Order allow,deny
31. Allow from all
32. </Directory>
33. </IfModule>
这样写好httpd-aspdotnet.conf后放入apache的/conf/extra/中,然后修改apache的主配置文件,/conf/httpd.conf 在其中适当位置加入代码
XML/HTML代码
1. # ASP.net ,写在httpd.conf 最后适当的位置。 只是为了规范。
2. Include conf/extra/httpd-aspdotnet.conf
然后,重启apache,现在/www/aspx/目录已经可以解析.aspx文件了。:)
ASP
让Apache完美的支持asp,目前网上也没有好的解决办法,很多东西都还是商业的,以前有个mod可以用,但只能用在apache1.X上,很老的东西了。 我找寻了很久也没有免费的解决办法。无意间得知phpnow有个插件可以支持asp,马上下载下来玩了一下,终于成功让这个插件脱离phpnow,使其支持任意的Apache。其实phpnow也是提取了试用版的ActiveHTML,效果还不错,我比较满意。
过程如下:首先下载这个phpnow版的ActiveHTML,释放在一个适合的位置,如D:\wamp\bin\ActiveHTML\ ,ActiveHTML需要注册几个.dll,进入CMD在ActiveHTML目录,执行如下命令
XML/HTML代码
1. # 进入CMD在ActiveHTML目录,执行如下命令
2. regsvr32.exe /s slASP3.dll
3. regsvr32.exe /s slDispatch.dll
4. regsvr32.exe /s MSXML4.dll
5. regsvr32.exe /s MSXML4R.dll
然后,同样的我们需要为ActiveHTML写一个配置文件.conf,如httpd-ahtml.conf,如下
XML/HTML代码
1. ##################################################
2. # Uncomment the following lines if you want
3. # to use Authorization environment-variables
4. # You may implement you own user
5. # authentication using LOGON_USER and
6. # LOGON_PASSWORD in your scripts (Login.asp)
7. ##################################################
8. LoadModule rewrite_module modules/mod_rewrite.so
9. RewriteEngine On
10. RewriteCond %{HTTP:Authorization} ^(.*)$ [NC]
11. RewriteRule /.* - [E=HTTP_AUTHORIZATION:%1]
12. ##################################################
13.
14. # Supports Imagemaps
15. AddHandler imap-file map
16.
17. ##################################################
18. # Do not allow access to global.asa
19. ##################################################
20. <Files ~ "global.asa">
21. Order allow,deny
22. Deny from all
23. Satisfy All
24. </Files>
25.
26.
27. ##################################################
28. # Add ActiveHTML-Handler 其中”D:/wamp/bin/ActiveHTML“ 为ActiveHTML释放的目录,需自己修改。
29. ##################################################
30. ScriptAlias /asp_bin "D:/wamp/bin/ActiveHTML"
31. Action ActiveHTML "/asp_bin/AHTML.exe"
32. AddHandler ActiveHTML .asp
33. DirectoryIndex index.asp default.asp
34.
35.
36. ##################################################
37. # Add Sampledirectory Alias 其中"D:/wamp/www/asp/"为asp文件所在的目录,需自己修改。
38. ##################################################
39. <Directory "D:/wamp/bin/ActiveHTML">
40. Options Indexes MultiViews FollowSymLinks
41. AllowOverride None
42. Order allow,deny
43. Allow from all
44. </Directory>
45.
46. Alias /asp/ "D:/wamp/www/asp/"
47. <Directory "D:/wamp/www/asp/">
48. Options Indexes MultiViews FollowSymLinks
49. AllowOverride all
50. Order allow,deny
51. Allow from all
52. </Directory>
同样的,在apache的主配置文件httpd.conf 里适当的位置加入代码
XML/HTML代码
1. # ASP ,写在httpd.conf 最后适当的位置。 只是为了规范。
2. Include conf/extra/httpd-ahtml.conf
然后,重启apache,现在/www/asp/目录已经可以解析.asp文件了。:)
PS
文中提及的配置文件.conf 及其mod,ActiveHTML,下载:extra.rar
其它的方法:
==================Apache支持ASP===================
前言:
好多人都在寻找apache下支持asp的方法,有的无非要建两个端口,通过代理实现支持asp,执行效率不是太好,现在终于有一种新的办法,通过模块实现支持asp,简单,直接.其实这个方法以前就有过,不过说的很含糊,很多地方需要更正,而且年久失传,原有的地址都找不到了,我翻遍了搜索引擎,终于在一个台湾的论坛找到了那个组件,自己亲自调试了下,现在把自己的成功经验与落伍的兄弟们分享.
①首先下载一个组件,这个是关键,也就是好多人寻找的东西
下載: http://mis.enc.hlc.edu.tw/upload/files/openasp-b1-win32.zip
②下载完apasp.DLL后,放置在apahce的modules文件夹,在httpd.conf的最下面(一定要在最下面,不然就没效果了)加入这一行:
LoadModule asp_module modules/apasp.DLL
③在httpd.conf中 <IfModule mod_mime.c>和</IfModule>之间的某个合适位置加入
AddType text/x-asp .asp
其实最好在AddType application/x-httpd-php .php下方加入,这样apache就能解释asp扩展名的文件了.
重新启动下apache,放个探针试下,是不是支持asp了?是不是很简单?
我的apache版本是1.33,这个组件好象只支持1.3的版本.
支持效果:
组 件 名 称 支持及版本
MSWC.AdRotator √
MSWC.BrowserType √
MSWC.NextLink √
MSWC.Tools √
MSWC.Status √
MSWC.Counters √
IISSample.ContentRotator √
IISSample.PageCounter √
MSWC.PermissionChecker √
Scripting.FileSystemObject (FSO 文本文件读写) √
adodb.connection (ADO 数据对象) √ 2.5
■ 常见的文件上传和管理组件 组 件 名 称 支持及版本
SoftArtisans.FileUp (SA-FileUp 文件上传) √
SoftArtisans.FileManager (SoftArtisans 文件管理) √
LyfUpload.UploadFile (刘云峰的文件上传组件) √
Persits.Upload.1 (ASPUpload 文件上传) √
w3.upload (Dimac 文件上传) √
■ 常见的收发邮件组件 组 件 名 称 支持及版本
JMail.SmtpMail (Dimac JMail 邮件收发) 中文手册下载 √
CDONTS.NewMail (虚拟 SMTP 发信) √ 1.2
Persits.MailSender (ASPemail 发信) √
SMTPsvg.Mailer (ASPmail 发信) √
DkQmail.Qmail (dkQmail 发信) √
Geocel.Mailer (Geocel 发信) √
IISmail.Iismail.1 (IISmail 发信) √
SmtpMail.SmtpMail.1 (SmtpMail 发信) √
■ 图像处理组件 组 件 名 称 支持及版本
SoftArtisans.ImageGen (SA 的图像读写组件) √
W3Image.Image (Dimac 的图像读写组件) √