rewriterule

时间:2024-06-05 23:38:06编辑:小早

如何实现访问https自动跳转到http

1、在服务器端设置301重定向,让https自动跳转到http。2、通过在网页使用JS来跳转到http。3、在谷歌浏览器设置强制访问http。http 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。https HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。HTTPS和HTTP的区别超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。HTTPS和HTTP的区别主要为以下四点:一、https协议需要到ca申请证书,一般免费证书很少,需要交费。二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

如何实现访问https自动跳转到http?

1、在服务器端设置301重定向,让https自动跳转到http。2、通过在网页使用JS来跳转到http。3、在谷歌浏览器设置强制访问http。http 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。https HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。HTTPS和HTTP的区别超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。HTTPS和HTTP的区别主要为以下四点:一、https协议需要到ca申请证书,一般免费证书很少,需要交费。二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

.htaccess怎么写隐藏的301重定向

301重定向的作用:1.规范网址;2.排除了重复页面;3.增加网址权重

首页新建一个空文件.htaccess,填入重定向规则后,上传到网站根目录。

用301将不带WWW的域名重定向主域名:
rewriteEngine on
rewriteCond %{http_host} ^abc.org[NC]
rewriteRule ^(.*)$ http://www.abc.org/$1 [R=301,L]

用301将绑定的其他域名重定向到主域名: 注意这个地方,有RewiteEnginee on这句,
RewriteEngine on
RewriteCond %{HTTP_HOST} ^其他域名.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.其他域名.com$
RewriteRule ^(.*)$ http://www.主域名.com/$1 [R=301,L]

旧域名重定向到新域名
创建一个.htaccess文件,并将下面提供的代码写入文件内,它可以确保旧域名所有的目录或者网页正确的跳转到新域名内。

记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件

如果所有的其它的域名都重定向到一个的话,可以直接如下, 省于RewriteCond语句.

用301将index.html、index.php等重定向到主域名:
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.abc.org/ [R=301,L]


如何把静态页面转换成动态的页面?

静态页面:不含有?号的html类型(html,html,shtml,xhxml,jhtml,xml)动态页面:含有?的,或是以asp,php,jsp,aspx结尾的都是动态。静态页面在服务器里面是真实存在的,访问静态页面不需要经过数据库,静态页面是静态链接。它就相当于面包,你去商店的时候,买面包,直接就给你了。动态页面在服务器里面不是真实存在的,访问动态页面需要经过数据库,动态页面是动态连接。它就相当于凉皮,你去买的时候,他需要去做,加工,然后再给你。

JSP中把动态页面转换为静态页面

  要自动生成静态页面 用Filter截获jsp请求并先进行预处理 自动生成Html 是个不错的主意 一个很容易想到的方法是在Filter截获Request后 导向一个Servlet 在这个Servlet中向本机发送一个请求 然后将响应写入一个文件   URLConnection urlConn = URLConnection open(//localhost/req);   注意要避免递归   另一个方法是不模拟 而是定制Response 把服务器返回的JSP响应输出到我们自己的Response中 就可以将响应快速写入Html文件 然后再发送给客户 而且 由于没有模拟请求 直接读取服务器响应速度非常快   截获Response的关键便是实现一个WrappedResponse 让服务器将响应写入我们的WrappedResponse中 这类似于一个代理模式 Servlet x已经提供了一个WrappedResponse类 我们只需要复写其中的一些关键方法即可   WrappedResponse实现了Response接口 它需要一个Response作为构造函数的参数 事实上这正是代理模式的应用 WrappedResponse充当了代理角色 它会将JSP/Servlet容器的某些方法调用进行预处理 我们需要实现自己的方法   综上 用Filter实现HTML缓冲的步骤是    用Filter截获请求 如/a jsp?id= 映射到对应的文件名为//a jspid=    查找是否有//a jspid= 如果有 直接forward到此 结束    如果没有 实现一个WrappedResponse 然后调用filterChain(request wrappedResponse)    将返回的WrappedResponse写入文件//a jspid= 然后返回响应给用户    下一次用户发送相同的请求时 到第 步就结束了 lishixinzhi/Article/program/Java/JSP/201311/20639


帝国cms 二级域名 伪静态 怎么设置

这里以discuz x2.0为例做演示说明。首先网站安装好之后,进入网站后台,点击“全局”

seo设置

全部勾选之后,点击“提交”

点击“查看当前的 Rewrite 规则”

点击“首页”查看自己的空间服务器版本

此时会有许多伪静态方面的规则可供选择,根据自己所用的空间服务器版本的不同,规则有所区别,需要我们选择相对应的规则,这里选择II6规则

7
将上面红色标记区域类的代码复制下来(#标记的都是说明文字,不用复制),进入网站ftp,下载根目录下的httpd.ini文件


请解释这个apache重写的正则表达式rewriterule ^/zh(?:/(.*))? /$1?language=zh

匹配以/zh开头的url,具体可能会有下面的情况:
/zh或/zh/ --> /?language=zh
/zh/list --> /list?language=zh

/zh/list/item --> /list/item?language=zh

^/zh(?:/(.*))?
这个正则表达式的意思是以/zh开头,后边可为空或跟一个/为开头的串

匹配结果中的$1是正则中(.*)的内容


Rewrite的介绍

电视动画《Rewrite》是根据Key制作的同名游戏改编的电视动画。2015年9月27日,在电视动画《Charlotte》的第13话终回放送后,官方公开了《Rewrite》的电视动画制作决定的PV。并且动画官方网站开通。2015年12月29日,Visual Art's和Aniplex公开了动画PV,并确定了在2016年夏动画开始放送,在海报宣传图上附有这次的关键句,“即使未来被封闭了也——(たとえ未来か闭ざされていても——)”。2016年的4月2日,key社继续发布了正式PV2,公开了TV动画视觉体验版本。

Rewrite的Rewrite介绍

很多情况下,某个 IP 的访问很容易造成 CPU 100% (比如 某些搜索引擎的固定抓取,别人大量的采集站点),这个时候我们就要利用一些有效的手段封掉对方的 IP,让他无法消耗服务器的资源,封 IP 的方法有很多种,如果你的 Web 服务器安装了 Rewrite 模块的话,也可以试试利用 Rewrite 规则封掉对方的 IP。例如我们把某个特定的 IP 直接重定向到 baidu 首页,在网站根目录的 .htaccess 文件里添加代码:Code:RewriteCond % 123.123.123.123 [NC]RewriteRule ^(.*)$ http://www.baidu.com/$1 [R=301]将 123.123.123.123 这个 IP 替换成您要限制的 IP 即可。如果要实现多个 IP ,可以这样写:RewriteCond % 123.123.123.123 [OR]RewriteCond % 124.124.124.124 [NC]RewriteRule ^(.*)$ http://www.baidu.com/$1 [R=301] Rewrite主要的功能就是实现URL的重写。它的正则表达式是基于Perl语言,入站的规则用于修改 HTTP 请求 Url。这些规则可以为以下几个目的,如演示对用户更加友好的 URL 命名空间为您的 Web 站点,将请求的 Url 重定向到新位置,或阻止访问 Url 来提供服务。出站的重写规则修改 HTTP 响应。例如,如果您的 Web 站点的导航结构已更改,您可以创建修改您的内容中的 Url,以便将 Web 页的内容指向正确的位置出站规则。然后,您可以创建基于缓存的位置与新的 url 的客户端请求重定向的入站的规则。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。基于目录级的(.htaccess)要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。 一.我们通过在IIS中安装一个名为 ISAPI_Rewrite 的ISAPI筛选器来实现 Rewrite 功能,您需要做的事情只有一个,就是修改配置文件 httpd.ini ,有关该组件的详细使用方法,您可以登录该组件官方网站 http://www.somesite.com/ 来学习,这里我们举一个简单的例子来说明它的用法。假设您要实现这样的 Rewrite 功能:您希望当用户访问 /about.htm (您的空间里可以并不需要存在 about.htm)的时候实际访问的是 /index.html 。设置方法是:1、创建一个文本文件,内容为[ISAPI_Rewrite]RewriteRule /about\.htm /index\.html这里,RewriteRule 这一行即为规则行,这一行由三部分组成,三部分由空格隔开,第一部分即 RewriteRule 这几个字,第二部分为用户访问的地址(使用正则表达式),第三部分为实际存在于服务器上的文件路径。2、将上述文件保存,命名为 httpd.ini 。3、将这个文件上传到您的网站根目录中,对于我们的虚拟主机,即上传至 /web 文件夹中。这时,当您访问 about.htm 的时候,看到的就是 index.html 的内容。Rewrite 是一个功能强大的平台,要真正的使用它,您可能要花费相当长的时间来学习。如果您使用像 Discuz! 论坛等支持伪静态的系统,而仅仅是需要使用伪静态功能,那么您可以不必学习,直接复制论坛开发者提供的配置文件即可,但要注意配置文件必须命名为 httpd.ini ,并且这个文件必须放在网站的根目录下。httpd.ini 修改或者上传后一般会立即生效,如果长时间不能生效,请登录主机控制面板将网站停止然后再启动。评述:不建议修改http.conf文件,因为这样需要重新启动apache。建议在项目的根目录建立一个文档,文档名字就是.htaccess,然后把重写规则写进去,这样就不需要重启apache。二、怎样借助 Rewrite 功能为特定的域名显示特定文件夹中的内容?这实际上是 Rewrite 功能的巧用,因为我们既然可以将 /about.htm 重写为 /index.html ,我们也就可以把 /about.htm 重写为 /about/ 。下面我们讲具体的实现方法。我们假设您有两个域名 www.name1.com 和 www.name2.com ,我们实现让访问 www.name1.com 时看到的是网站根下的内容,而访问 www.name2.com 时看到的是 /name2/ 文件夹中的内容。那么设置步骤如下:1、将您的网站捆绑域名 www.name1.com 和 www.name2.com ,这个非常重要,两个域名都要捆绑。这时候如果不做设置,两个域名访问的都是网站根下。2、修改上述问题一中的 httpd.ini 文件,在尾部增加以下内容:RewriteCond Host: www\.name2\.com# 表示下一行规则只对 www.name2.com 生效(正则表达式中 \. 表示 . 本身)。RewriteRule ^(.*)$ /name2/$1 [I]# 表示将所有网页 Rewrite 到 name2 文件夹中,[I]表示忽略大小写。请确认上述内容位于 [ISAPI_Rewrite] 行之下,如果原本网站不存在 httpd.ini 文件,请将上述内容前面加上 [ISAPI_Rewrite] 。3、将修改后的 httpd.ini 上传到网站根下覆盖原文件。通过这个方法,您可以将捆绑在网站上的任何一个域名采用任何特定的 Rewirte 规则,实现类似捆绑子目录的功能当然也是不在话下。这样,您的空间能捆绑多少个域名,您就可以建立多少个内容不同的网站了。 ngx_http_rewrite_module模块允许正则替换URI,返回页面重定向,和按条件选择配置。ngx_http_rewrite_module模块指令按以下顺序处理: 处理在server级别中定义的模块指令; 为请求查找location; 处理在选中的location中定义的模块指令。如果指令改变了URI,按新的URI查找location。这个循环至多重复10次,之后nginx返回错误500 (Internal Server Error)。 指令 语法:break;  默认值:—上下文:server,location,if  停止处理当前这一轮的ngx_http_rewrite_module指令集。举例:if ($slow) { limit_rate 10k; break;} 语法:if(condition) { ... }  默认值:—上下文:server,location  计算指定的condition的值。如果为真,执行定义在大括号中的rewrite模块指令,并将if指令中的配置指定给请求。if指令会从上一层配置中继承配置。条件可以是下列任意一种: 变量名;如果变量值为空或者是以“0”开始的字符串,则条件为假; 使用“=”和“!=”运算符比较变量和字符串; 使用“~”(大小写敏感)和“~*”(大小写不敏感)运算符匹配变量和正则表达式。正则表达式可以包含匹配组,匹配结果后续可以使用变量$1..$9引用。如果正则表达式中包含字符“}”或者“;”,整个表达式应该被包含在单引号或双引号的引用中。 使用“-f”和“!-f”运算符检查文件是否存在; 使用“-d”和“!-d”运算符检查目录是否存在; 使用“-e”和“!-e”运算符检查文件、目录或符号链接是否存在; 使用“-x”和“!-x”运算符检查可执行文件; 举例:if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break;}if ($http_cookie ~* id=([^;]+)(?:;|$)) { set $id $1;}if ($request_method = POST) { return 405;}if ($slow) { limit_rate 10k;}if ($invalid_referer) { return 403;}内嵌变量$invalid_referer的值是通过valid_referers指令设置的。 语法:returncode[text];  returncodeURL;  returnURL;  默认值:—上下文:server,location,if  停止处理并返回指定code给客户端。返回非标准的状态码444可以直接关闭连接而不返回响应头。从0.8.42版开始,可以在指令中指定重定向的URL(状态码为301、302、303和307),或者指定响应体文本(状态码为其它值)。响应体文本或重定向URL中可以包含变量。作为一种特殊情况,重定向URL可以简化为当前server的本地URI,那么完整的重定向URL将按照请求协议($scheme)、server_name_in_redirect指令和port_in_redirect指令的配置进行补全。另外,状态码为302的临时重定向使用的URL可以作为指令的唯一参数。该参数应该以“http://”、“https://”或者“https://”开始。URL中可以包含变量。0.7.51版本以前只能返回下面状态码: 204、400、402— 406、408、410、411、413、416 和 500— 504。直到1.1.16和1.0.13版,状态码307才被认为是一种重定向。 语法:rewriteregexreplacement[flag];  默认值:—上下文:server,location,if  如果指定的正则表达式能匹配URI,此URI将被replacement参数定义的字符串改写。rewrite指令按其在配置文件中出现的顺序执行。flag可以终止后续指令的执行。如果replacement的字符串以“http://”或“https://”开头,nginx将结束执行过程,并返回给客户端一个重定向。可选的flag参数可以是其中之一: last 停止执行当前这一轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location; break 停止执行当前这一轮的ngx_http_rewrite_module指令集; redirect 在replacement字符串未以“http://”或“https://”开头时,使用返回状态码为302的临时重定向; permanent 返回状态码为301的永久重定向。 完整的重定向URL将按照请求协议($scheme)、server_name_in_redirect指令和port_in_redirect指令的配置进行补全。举例:server { ... rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last; return 403; ...}但是当上述指令写在“/download/”的location中时,应使用标志break代替last,否则nginx会重复10轮循环,然后返回错误500:location /download/ { rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break; return 403;}如果replacement字符串包括新的请求参数,以往的请求参数会添加到新参数后面。如果不希望这样,在replacement字符串末尾加一个问号“?”,就可以避免,比如:rewrite ^/users/(.*)$ /show?user=$1? last;如果正则表达式中包含字符“}”或者“;”,整个表达式应该被包含在单引号或双引号的引用中。 语法:rewrite_logon|off;  默认值:rewrite_log off;上下文:http,server,location,if  开启或者关闭将ngx_http_rewrite_module模块指令的处理日志以notice级别记录到错误日志中。 语法:setvariablevalue;  默认值:—上下文:server,location,if  为指定变量variable设置变量值value。value可以包含文本、变量或者它们的组合。 语法:uninitialized_variable_warnon|off;  默认值:uninitialized_variable_warn on;上下文:http,server,location,if  控制是否记录变量未初始化的警告到日志。内部实现ngx_http_rewrite_module模块的指令在解析配置阶段被编译成nginx内部指令。这些内部指令在处理请求时被解释执行。而解释器是一个简单的堆栈机器。比如,下面指令location /download/ { if ($forbidden) { return 403; } if ($slow) { limit_rate 10k; } rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;}将被翻译成下面这些指令:variable $forbiddencheck against zero return 403 end of codevariable $slowcheck against zeromatch of regular expressioncopy /copy $1copy /mp3/copy $2copy .mp3end of regular expressionend of code请注意没有对应上面的limit_rate指令的内部指令,因为这个指令与ngx_http_rewrite_module模块无关。nginx会为这个if块单独创建一个配置,包含limit_rate等于10k。如果条件为真,nginx将把这个配置指派给请求。指令rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;可以通过将正则表达式中的第一个斜线“/”放入圆括号,来实现节约一个内部指令:rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;对应的内部指令将会是这样:match of regular expressioncopy $1copy /mp3/copy $2copy .mp3end of regular expressionend of code

上一篇:心碎的宝贝

下一篇:丘雯靖