问题:想让某个网站只能本地和指定的域名能访问。
解决办法:通过htaccess设置访问控制权限
apache的使用指南手册说优先使用LimitExcept,如下
A <LimitExcept> section should always be used in preference to a <Limit> section when restricting access, since a <LimitExcept> section provides protection against arbitrary methods.
看了很久的网上资料,发现那些设置IP地址和域名地址的方法都不起作用。设置了allow也无法访问
例如allow from *.taobao.com Allow from 192.168.2.3
都没用的。但是通过Env环境变量来判断是有效的。
SetEnvIfNoCase Referer "^http://mydomain.com$" locally_linked
然后 allow from env=locally_linked
SetEnvIfNoCase 和SetEnvIf的区别是前者不区分大小写。后者区分。
那么,限制某个域名可以通过referer来控制。但是本地的请求头中没有referer属性,那怎么办。
就要理解到SetEnvIf的应用规则了。SetEnvIf是按照正则表达式的方式来判断的,那写个referer是空的正则表达式就可以了吧。
SetEnvIf Referer ^$ locally_linked
OK。测试顺利通过。
但是,如果是图片和JS,css请求又有问题了。因为这些请求是带referer的。
那很简单了,只要添加上该系统域名就可以了
最后是这样的:
SetEnvIf Referer ^http://test.login.nmg.com.hk/ locally_linked
SetEnvIf Referer ^$ locally_linked
SetEnvIf Referer ^http://test.authserver.nmg.com.hk locally_linked
<Limit GET POST HEAD>
order Deny,allow
Deny from all
allow from env=locally_linked
</Limit>
<Limit PUT DELETE>
Deny from all
</Limit>
^表示字符串开始
$表示字符串结束
SetEnvIfNoCase Referer "^http://www.mydomain.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://www.mydomain.com$" locally_linked=1
SetEnvIfNoCase Referer "^http://mydomain.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://mydomain.com$" locally_linked=1
SetEnvIfNoCase Referer "^$" locally_linked=1
<FilesMatch "\.(gif|php|html|php3|htm|jpe?g)$">
Order Allow,Deny
Allow from env=locally_linked
</FilesMatch>
限制用户代码类型访问权限
SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
Order Deny,Allow
Deny from all
Allow from env=let_me_in
_______________________________________________________________________
页面跳转
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
跳转保存get参数
RwriteRule ^(.*)$ index.php?param=$1 [QSA,L]
参考:
http://forums.powweb.com/showthread.php?t=73248.
apache htaccess文件资料:
http://www.phpchina.com/resource/manual/apache/mod/core.html#accessfilename
[NC] nocase|NC'(忽略大小写)
[P] proxy
[L] last
H|handler
N|next
R|redirect
3.Apache mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量
APACHE FLAGS 资料
http://httpd.apache.org/docs/current/rewrite/flags.html
分享到:
相关推荐
mac电脑在xampp环境下搭建drupal使用的.htaccess配置文件,下载后将文件名改为.htaccess放在网站根目录即可。 如果网站不在根目录则放在对应级别的目录下 并修改htaccess文件119行和123行,将119行RewriteBase /...
内置phpstudy,apache,Nginx隐藏首页的配置文件
设置网站路径,文件属性,页面404,403,以及域名重定向,
3、本程序采用的是标准htaccess配置代码,经过了数月的测试与反馈,已经非常完善;并且相对于其它的程序,生成制作的代码更加简洁; 4、目前,我们修复了列表filelist显示逻辑错误、MIME增加功能、显示列表核心bug...
1. .htaccess 文件的作用:.htaccess 文件允许用户在网站的根目录下进行配置,无需对整个服务器的配置文件进行修改,增加了灵活性和安全性。 2. 常见功能: - URL 重写:通过 RewriteEngine 和 RewriteRule 指令...
3、本程序采用的是标准htaccess配置代码,经过了数月的测试与反馈,已经非常完善;并且相对于其它的程序,生成制作的代码更加简洁; 4、目前,我们修复了列表filelist显示逻辑错误、MIME增加功能、显示列表核心...
~ "^.(htaccess|htpasswd)$"> deny from all ErrorDocument 400 /123.html RewriteEngine on RewriteCond %{HTTP_HOST} ^(botaoju\.cn)(:80)? [NC] RewriteRule ^(.*) http://www.botaoju.cn/$1 [R=301,L] order ...
thinkphp中配置appache的rewrite模式
《DX1论坛伪静态设置详解——.htaccess配置解析》 在互联网技术中,网站的优化与用户体验密切相关,其中一种优化手段就是实现伪静态。伪静态技术能够将动态URL转化为静态化,使得搜索引擎更容易抓取,同时提升用户...
可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦,下面我来给各位总结一下配置方法。 其实nginx和.htaccess一点关系都没有,只是一大堆人...
Apache下的`.htaccess`文件是一种非常实用的工具,它允许我们在不修改服务器主配置的情况下,对网站进行多种自定义设置。这篇内容将详细介绍如何利用`.htaccess`进行配置,包括自定义错误页面、禁止目录浏览、地址...
htaccess攻击通常涉及到将恶意的代码通过htaccess配置注入到web应用中,从而获取服务器的控制权。在上述文件中提到,htaccess攻击需要在Apache服务器上进行配置,并通过特定的命令进行操作。通过编辑服务器的配置...
它记录用户的请求,并在发生攻击时使用Apache htaccess文件阻止攻击者的IP地址。 网站管理员可以使用其配置文件对其进行自定义。 #安装 通过FTP将文件上传到您的网站(到所需位置) : “ AntiDos.php”,“ ...
`.htaccess`(分布式配置文件)是Apache服务器配置的一部分,允许我们在网站的根目录下进行特定的设置,而无需直接修改主服务器配置。对于许多网站管理员和开发者来说,`htaccess_Editor`或`.htaccess Online Editor...
项目文件总计73个,包括28个PHP源文件、11个PNG图片文件、6个HTML模板文件、4个CSS样式表、3个Git忽略配置文件、3个JPG图片文件、2个TXT文本文件、2个Markdown文档、2个.htaccess配置文件、2个ICO图标文件和1个MD...
文件类型涵盖PHP、CSS、JavaScript、HTML等多种语言,具体包括40个JPG图片、20个PHP脚本、14个Twig模板、10个YML配置、8个XML文件、8个CSS样式表、4个PNG图片、3个HTACCESS配置、2个dist文件夹、2个php~临时文件。...
共计622个文件,涵盖370个JavaScript文件、126个PNG图片文件、38个GIF动画文件、32个HTML页面文件、30个CSS样式文件、10个Markdown文件、8个文本文件、2个PHP脚本文件、1个JSON数据文件、1个htaccess配置文件。...
PHP源代码文件11个,JavaScript源代码文件8个,微信小程序特有的WXML模板文件8个,JSON配置文件7个,WXSS样式文件7个,Markdown文档文件2个,项目许可证文件1个,以及Apache的htaccess配置文件1个。该系统提供了在线...