重定向

.htaccess

馋奶兔 提交于 2019-12-30 09:58:04
一. 在Apache配置中启用Rewrite 打开配置文件httpd.conf: 1.启用rewrite # LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 # 2.启用.htaccess 在虚拟机配置项中 AllowOverride None 修改为: AllowOverride All 3.打开phpinfo看一下 (例如:http://localhost/?phpinfo=1) 二、Rewrite基本写法 Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。 服务器有配置文件不可能由我们来改,所以大多情况下要在网站的根目录下建一个.htaccess文件。 RewriteEngine on //启动rewrite引擎 RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //“([0-9]*)” 代表范围 用(.*)代表所有,下同。 RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //虚拟目录 注:RewriteRule 正则 替代($1,$2 跟正则里的一样,代表括号里的东西) 【但这里没有有/?的转义】

Nginx的location匹配规则

假如想象 提交于 2019-12-30 02:15:27
一 Nginx的location语法 location [=|~|~*|^~] /uri/ { … } = 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求 ~ 区分大小写匹配(可用正则表达式) ~* 不区分大小写匹配(可用正则表达式) !~ 区分大小写不匹配 !~* 不区分大小写不匹配 ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式 示例1: location / { } 匹配任意请求 示例2: location ~* .(gif|jpg|jpeg)$ { rewrite .(gif|jpg|jpeg)$ /logo.png; } 不区分大小写匹配任何以gif、jpg、jpeg结尾的请求,并将该请求重定向到 /logo.png请求 示例3: location ~ ^.+\.txt$ { root /usr/local/nginx/html/; } 区分大小写匹配以.txt结尾的请求,并设置此location的路径是/usr/local/nginx/html/。也就是以.txt结尾的请求将访问/usr/local/nginx/html/ 路径下的txt文件 二 alias与root的区别 root 实际访问文件路径会拼接URL中的路径 alias 实际访问文件路径不会拼接URL中的路径 示例如下:

常见的错误代码

别说谁变了你拦得住时间么 提交于 2019-12-29 22:36:39
错误代码(也称作状态代码),指为服务器所接收每个请求(网页点击)分配的 3 位数代码。多数有效网页点击都有状态代码 200("正常")。"网页未找到"错误会生产 404 错误。某些常见的代码以粗体显示。 1xx(临时响应) 用于表示临时响应并需要请求者执行操作才能继续的状态代码。 代码 说明 100(继续) 请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。 101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备进行切换。 2xx(成功) 用于表示服务器已成功处理了请求的状态代码。 代码 说明 200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果您的 robots.txt文件显示为此状态,那么,这表示 Googlebot 已成功检索到该文件。 201(已创建) 请求成功且服务器已创建了新的资源。 202(已接受) 服务器已接受了请求,但尚未对其进行处理。 203(非授权信息) 服务器已成功处理了请求,但返回了可能来自另一来源的信息。 204(无内容) 服务器成功处理了请求,但未返回任何内容。 205(重置内容) 服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。 206(部分内容) 服务器成功处理了部分 GET 请求

Ubuntu将标准输出重定向到剪贴板

旧城冷巷雨未停 提交于 2019-12-29 14:41:49
作为一名优秀的程序员,终端和复制粘贴必将是必不可少的,手动将输出复制粘贴不应该是一名优秀程序员的作风。那么如何将标准输出重定向到剪贴板方便我们粘贴呢? 1.更新源 sudo apt update 2.安装 xsel 或者 xclip sudo apt install xsel sudo apt install xclip 3.将输出通过管道重定向到剪贴板 ls | xsel -ib # 使用xsel ls | xclip -sel clip # 使用xclip 4.可以考虑使用别名来简短命令这里不再赘述 参考文档 https://askubuntu.com/questions/184397/how-do-i-pipe-terminal-standard-output-stdout-to-the-clipboard 来源: CSDN 作者: tcliuwenwen 链接: https://blog.csdn.net/tcliuwenwen/article/details/103752486

微信公众号支付JSAPI网页,total_fee错误不正确,header重定向参数丢失,无法获取订单号和金额解决

早过忘川 提交于 2019-12-29 14:41:07
微信公众号支付官方demo错误, 公众号支付只能用在微信里,也就是微信内部浏览器. 1.到WxPayHubHelper.php文件 JsApi_pub()类下createOauthUrlForCode($redirectUrl)方法, 第二个参数 改为 $urlObj["redirect_uri"] = urlencode($redirectUrl); //对$url变量进行url编码 不然header重定向时无法获取订单号和金额 2.wx.jsapi.php这个文件在header重定向后,get,post等方式传递的参数就没有了,不过重定向的URL里面有个STATE,可以把数据放里面,就OK了.具体看代码. 文件为wx.jsapi.php if (!isset($_GET['code'])) { //触发微信返回code码 $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL); //重定向的URL里面有个STATE,把GET到的数据参数放在一个数组后转换成json格式的字符串 $state = json_encode(array( "bill_no" => $data["bill_no"], //订单号 "title" => $data["title"], //标题 "return_url" =>

管道及I/O重定向

依然范特西╮ 提交于 2019-12-29 12:11:31
管道及IO 重定向 > < >> << 计算机组成: 运算器,控制器:CPU 存储器:RAM 输入/输出设备 I/O 程序: 指令和数据 控制器:指令 运算器: 存储器: 地址总线: 内存寻址 数据总线: 传输数据 控制总线: 控制指令 寄存器: CPU暂时存储器 系统设定: 默认输出设备: 标准输出 STDOUT 1 标准输入设备: 标准输入 STDIN 0 标准错误输出: STDERR 2 标准输入: 键盘 标准输出和错误输出: 显示器 I/O 重定向 :改变输入输出的默认来源 Linux:输出重定向 : > : 输出重定向,覆盖输出 >> : 输出重定向,追加输出 set -C : 禁止对已经存在的文件使用覆盖重定向输出,若想强制覆盖,则用 >| set +C : 关闭上诉功能 2> : 重定向错误输出 ,覆盖 2>> : 重定向错误输出,追加 标准输出和错误输出属于两个不同的数据流。 &> redirect 重定向所有正确和错误输出 Linux 输入重定向: < : 输入重定向 tr : 大写字符转换 tr 'a-z' 'A-Z' < /etc/test 表示将/etc/test 下的字符作为输入,重定向给tr。 即将/etc/test 下的所有小写转换为大写 << : Here Document 在此处生成文档 cat << END the first line the

linux 输入输出重定向

江枫思渺然 提交于 2019-12-29 12:10:37
输入输出重定向 1,输入输出重定向,是针对过滤器的,不针对,编辑器和交互工具 2,>号只把正确的标准输出重定向,输出错误信息,可以用2> 3,新建或清空文件可以直接用>filename,>和2>都会清空目标文件 4,&>号可以把正确信息和错误信息全部输出重定向6 5,>>可以把重定向追加到目标文件 6,<为输入重定向,<<为等待输入直接目标出现为止,输入重定向可以将标准输入重定向为文件,如cat <a.txt 管道输出 1,管'道输出可以用|,比如 ls|wc -l 2,管道输出是向左向右的,可以在一行命令里用多个管道 如: ls /etc/ -l |grep '^d' |wc -l 3,tee命行可以复制输出到目标文件,一般用在管道输出中 4,tr 为替换命行,可以简单的进行文件加密,用法如下: echo "aabbccddee" >a.txt tr 'a-x' 'B-Z' <a.txt >b.txt 来源: https://www.cnblogs.com/sprite/p/3736041.html

浏览器中输入URL到返回页面的全过程

六眼飞鱼酱① 提交于 2019-12-29 00:39:12
第一步,解析域名,找到主机IP (1)浏览器会缓存DNS一段时间,一般2-30分钟不等。如果有缓存,直接返回IP,否则下一步。 (2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件。如果找到,直接返回IP,否则下一步。(在计算机本地目录etc下有一个hosts文件,hosts文件中保存有域名与IP的对应解析,通常也可以修改hosts科学上网或破解软件。) (3)进行了(1)(2)本地查询无果,只能借助于网络。路由器一般都会有自己的DNS缓存,ISP服务商DNS缓存,这时一般都能够得到相应的IP。如果还是无果,只能借助于DNS递归解析了。 (4)这时,ISP的DNS服务器就会开始从根域名服务器开始递归搜索,从.com顶级域名服务器,到baidu的域名服务器。 到这里,浏览器就获得了IP。在DNS解析过程中,常常会解析出不同的IP。比如,电信的是一个IP,网通的是另一个IP。这是采取了智能DNS的结果, 降低运营商间访问延时,在多个运营商设置主机房,就近访问主机。电信用户返回电信主机IP,网通用户返回网通主机IP。当然,劫持DNS,也可以屏蔽掉一 部分网点的访问,某防火长城也加入了这一特性。 第二部,浏览器与网站建立TCP连接 浏览器利用IP直接与网站主机通信。浏览器发出TCP(SYN标志位为1)连接请求,主机返回TCP(SYN,ACK标志位均为1)应答报文

在浏览器地址栏输入URL,按下回车后究竟发生了什么?

青春壹個敷衍的年華 提交于 2019-12-29 00:37:50
1.DNS 在浏览器中输入URL后,首先要进行DNS解析,DNS解析的顺序为: 浏览器缓存 本地hosts文件 系统缓存 路由器缓存 DNS服务器迭代查询 2.发送请求 通过DNS得到目标的IP地址后,通过TCP协议向服务器发送请求即三次握手。 3.服务器永久重定向响应 大多数的网站会将用户访问的地址永久重定向,这主要与缓存和搜索排名有关。 搜索排名方面:例如www.test.com与test.com搜索引擎认为是两个网站,不会将排名合并。如果使用重定向将test.com定向到www.test.com搜索引擎就会认为是一个页面将排名信息合并。 缓存方面:如果使用不同的地址,在缓存中出现好几次,缓存友好性变差 4.跟踪重定向地址 根据返回新重定向地址,重新发送新的http请求 5.处理HTTP请求,返回响应 建立连接:服务器允许客户端建立连接 接受请求:从网络中读取HTTP报文交给Nginx或者Apache进行规则匹配 处理请求:根据方法,资源,首部和可选的主体部分对请求进行处理 访问资源:寻找存储对象,访问报文中指定的资源 构建响应报文:创建有正确首部的HTTP响应报文 6.处理HTTP响应 发送响应:将响应会送给客户端 记录日志:将与已经完成的事务记录在一个日志文件中 7.浏览器解析显示 浏览器得到页面后会进行展示,如果还包含其他外部资源如图片、视频等等则继续请求其他资源。 来源

浏览器与服务器如何交互

大城市里の小女人 提交于 2019-12-29 00:37:09
最近在研究浏览器与服务器的交互问题,转载了一些东西,下面这些忘了原文出处了,觉得很有帮助: 1. 我们在浏览器中输入网址。 2. 浏览器查找域名对应的IP地址 DNS查找过程为: 浏览器缓存->系统缓存->路由器缓存->ISP DNS缓存->递归搜索 递归搜索过程为:从根域名服务器到顶级域名服务器到你查询的域名服务器。 3. 浏览器打开TCP连接(默认端口为80),向该IP的服务器发送一条HTTP请求,如果浏览器存储了该域名下的cookie,那么cookie也会放入http请求中 4. 服务器给浏览器进行一个301永久重定向响应。该IP对应的服务器很可能是代理服务器,比如你输入“http://baidu.com”,而不是“http://www.baidu.com”,按道理这两个网址对应的是同一个网页,因此通过代理服务器的方式进行重定向相应,让这两个网址访问的是同一个网页。 5. 浏览器根据重定向地址再次进行HTTP请求。 6. 服务器分析HTTP请求,生成HTTP响应,将响应发给客户端。 7. 浏览器收到响应内容之后,生成主页框架,同时向服务端继续发送请求,请求的内容是主页里的一些资源,比如说图片、视频等。 8. 对于静态的页面内容,浏览器通常进行缓存,对于动态的内容通常不缓存,缓存的时间也是有期限的。 9. 浏览器向服务器发送异步请求