当前位置: 首页 > news >正文

网站建设管理视频网站建设建设价格

网站建设管理视频,网站建设建设价格,求手机网址,西安在线什么是URL重写 URL重写#xff08;URL rewriting#xff09;是一种在Web服务器上修改或转换请求URL的过程。它通常涉及使用服务器配置或规则来更改传入的URL#xff0c;以便在不改变实际请求资源的情况下#xff0c;实现不同的行为#xff0c;如重定向、路径映射、参数处… 什么是URL重写 URL重写URL rewriting是一种在Web服务器上修改或转换请求URL的过程。它通常涉及使用服务器配置或规则来更改传入的URL以便在不改变实际请求资源的情况下实现不同的行为如重定向、路径映射、参数处理等。 URL重写在服务器层面进行因此客户端如浏览器对于URL的请求不会感知到这些更改但服务器会根据配置进行适当的处理。URL重写可以用于多种目的例如 重定向: 将一个URL重写为另一个URL实现301永久重定向或302临时重定向。这可以用于更改站点结构、修复错误的URL、实现SEO优化等。 路径映射: 将一个URL的路径映射到另一个位置这对于隐藏实际文件路径或路径重组很有用。 查询参数处理: 在URL中添加、删除或修改查询参数以适应不同的应用需求。 动态URL到静态URL: 将动态生成的URL带有参数转化为静态URL更友好且易于索引。 隐藏技术细节: 可以通过URL重写隐藏后端服务器或应用程序的实际技术细节提高安全性。 在Nginx、Apache等常见的Web服务器中URL重写可以通过正则表达式、规则匹配等方式来实现。具体的语法和方法会因服务器软件的不同而有所不同。通常服务器配置文件中会有专门的部分用于配置URL重写规则例如在Nginx中是使用rewrite指令。URL重写是一种强大的技术但在使用时需要小心确保配置正确以避免潜在的问题例如无限循环重定向或错误的重写规则可能导致网站不可用。 Ingress 内置变量 内置预定义变量即无需声明就可以使用的变量通常包括一个http请求或响应中一部分内容的值以下为一些常用的内置预定义变量 变量名      定义 $arg_PARAMETER  GET请求中变量名PARAMETER参数的值。 $args   这个变量等于GET请求中的参数。例如foo123barblahblah;这个变量只可以被修改 $binary_remote_addr 二进制码形式的客户端地址。 $body_bytes_sent    传送页面的字节数 $content_length 请求头中的Content-length字段。 $content_type   请求头中的Content-Type字段。 $cookie_COOKIE  cookie COOKIE的值。 $document_root  当前请求在root指令中指定的值。 $document_uri   与$uri相同。 $host   请求中的主机头(Host)字段如果请求中的主机头不可用或者空则为处理请求的server名称(处理请求的server的server_name指令的值)。值为小写不包含端口。 $hostname   机器名使用 gethostname系统调用的值 $http_HEADER    HTTP请求头中的内容HEADER为HTTP请求中的内容转为小写-变为_(破折号变为下划线)例如$http_user_agent(Uaer-Agent的值); $http_user_agent 客户端agent信息; $http_cookie 客户端cookie信息; $sent_http_HEADER   HTTP响应头中的内容HEADER为HTTP响应中的内容转为小写-变为_(破折号变为下划线)例如 $sent_http_cache_control, $sent_http_content_type…; $is_args    如果$args设置值为?否则为。 $limit_rate 这个变量可以限制连接速率。 $nginx_version  当前运行的nginx版本号。 $query_string   与$args相同。 $remote_addr    客户端的IP地址。 $remote_port    客户端的端口。 $remote_user    已经经过Auth Basic Module验证的用户名。 $request_filename   当前连接请求的文件路径由root或alias指令与URI请求生成。 $request_body   这个变量0.7.58包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有意义。 $request_body_file  客户端请求主体信息的临时文件名。 $request_completion 如果请求成功设为OK如果请求未完成或者不是一系列请求中最后一部分则设为空。 $request_method 这个变量是客户端请求的动作通常为GET或POST。包括0.8.20及之前的版本中这个变量总为main request中的动作如果当前请求是一个子请求并不使用这个当前请求的动作。 $request_uri    这个变量等于包含一些客户端请求参数的原始URI它无法修改请查看$uri更改或重写URI, 包含请求参数的原始URI不包含主机名如”/foo/bar.php?argbaz”。 $scheme 所用的协议比如http或者是https比如rewrite ^(.)$ $scheme://example.com$1 redirect; $server_addr    服务器地址在完成一次系统调用后可以确定这个值如果要绕开系统调用则必须在listen中指定地址并且使用bind参数。 $server_name    服务器名称。 $server_port    请求到达服务器的端口号。 $server_protocol    请求使用的协议通常是HTTP/1.0或HTTP/1.1。 $uri    请求中的当前URI(不带请求参数参数位于args)不同于浏览器传递的args)不同于浏览器传递的args)不同于浏览器传递的request_uri的值它可以通过内部重定向或者使用index指令进行修改。uri不包含主机名如”/foo/bar.html”。 Ingress 正则表达式 正则表达式匹配其中 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 * 重复零次或更多次重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 *? 复任意次但尽可能少重复 ? 重复1次或更多次但尽可能少重复 ?? 重复0次或1次但尽可能少重复 {n,m}? 重复n到m次但尽可能少重复 {n,}? 重复n次以上但尽可能少重复 \W 匹配任意不是字母数字下划线汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符 (exp) 匹配exp,并捕获文本到自动命名的组里 (?nameexp) 匹配exp,并捕获文本到名称为name的组里也可以写成(?nameexp) (?:exp) 匹配exp,不捕获匹配的文本也不给此分组分配组号 (?exp) 匹配exp前面的位置 (?exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (?!exp) 匹配前面不是exp的位置 (?#comment) 注释分组不对正则表达式的处理产生任何影响 配置URL重写规则 在某些应用场景中后端服务提供的URL与Ingress规则中执行的路径不同而Ingress访将访问路径直接转发到后端相同路径如果不配置URL重写规则所有访问都将返回404。比如如下案例Ingress规则中配置的是/user/info而后端服务提供的访问路径是/info,在不配置重写的情况下会直接转发给后端/user/info与实际提供的访问路径/info不匹配会直接返回404。接下来咱们用案例的方式进行验证。 不配置URL重写直接转发 $ cat ingress.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: demo spec:rules:- host: demo.kubesre.comhttp:paths:- path: /pathType: ImplementationSpecificbackend:service:name: demo-svcport:number: 8080ingressClassName: nginx$ kubectl apply -f ingress.yml ingress.networking.k8s.io/demo configured 访问验证(/user/info) # 访问/user/info可以看出直接正常返回了 $ curl http://demo.kubesre.com/user/info {message:云原生运维圈} 注解说明 以上案例Ingress重写是通过nginx.ingress.kubernetes.io/rewrite-target注解实现不同路径的重写规则。占位符$2表示将第二个括号即(.*)中匹配到的所有字符填写到nginx.ingress.kubernetes.io/rewrite-target注解中。想必大家都知道Ingress是基于Nginx开发的此时是通过Ingress CRD进行创建的重写配置其本质也是修改Nginx配置文件的此时从Ingress里的Nginx拷贝出来的配置如下 server {server_name demo.kubesre.com ;listen 80 ;listen [::]:80 ;listen 443 ssl http2 ;listen [::]:443 ssl http2 ;set $proxy_upstream_name -;ssl_certificate_by_lua_block {certificate.call()}location ~* ^/user(/|$)(.*) {set $namespace default;rewrite (?i)/user(/|$)(.*) /$2 break;proxy_pass http://upstream_balancer;proxy_redirect off;} 高级URL重写规则 对于一些复杂的重写规则需求可以通过如下注解来实现其本质也是修改Nginx配置文件。 nginx.ingress.kubernetes.io/server-snippet在nginx.conf的“server”字段中添加自定义配置。 nginx.ingress.kubernetes.io/configuration-snippet在nginx.conf的“location”字段中添加自定义配置。 URL重写Flag参数 last表示本条规则匹配完成后继续向下匹配。 break表示本条规则匹配完成后停止匹配。 redirect表示临时重定向返回状态码302。 permanent表示永久重定向返回状态码301。 重定向就是将网页自动转向重定向 301永久性重定向新网址完全继承旧网址旧网址的SEO网络搜索引擎的排名等完全清零 301重定向是网页更改地址后对搜索引擎友好的最好方法只要不是暂时搬移的情况都建议使用301来做转址。 302临时性重定向对旧网址没有影响但新网址不会有排名 搜索引擎爬虫会抓取新的内容而保留旧的网址 配置Location 通过Ingress注解nginx.ingress.kubernetes.io/server-snippet配置location访问/sre返回401错误代码案例如下 $ cat sre.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:nginx.ingress.kubernetes.io/server-snippet: |location /sre {return 401;}name: demo-redirect spec:rules:- host: demo.kubesre.comhttp:paths:- path: /pathType: ImplementationSpecificbackend:service:name: demo-svcport:number: 8080ingressClassName: nginx$ kubectl apply -f 1.yml ingress.networking.k8s.io/demo-redirect configured 访问验证 # 表示验证成功 $ curl http://demo.kubesre.com/sre/ html headtitle401 Authorization Required/title/head body centerh1401 Authorization Required/h1/center hrcenternginx/center /body /html URL重定向permanent cat demo-permanent.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:nginx.ingress.kubernetes.io/configuration-snippet: |rewrite ^/$ https://www.baidu.com redirect;name: demo-redirect spec:rules:- host: demo.kubesre.comhttp:paths:- path: /pathType: ImplementationSpecificbackend:service:name: demo-svcport:number: 8080ingressClassName: nginx$ kubectl apply -f demo-permanent.yml ingress.networking.k8s.io/demo-permanent created 访问验证 # 301永久重定向浏览器器地址栏会显示跳转后的URL地址,真实效果可以通过浏览器访问测试验证 $ curl http://demo.kubesre.com html headtitle301 Moved Permanently/title/head body centerh1301 Moved Permanently/h1/center hrcenternginx/center /body /html URL重定向redirect 通过URL重定向访问/test/info,直接重定向302跳转到/user/info。 $ cat demo-redirect.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:nginx.ingress.kubernetes.io/configuration-snippet: |rewrite ^/test/(.*)$ /user/$1 redirect;name: demo-redirect spec:rules:- host: demo.kubesre.comhttp:paths:- path: /testpathType: ImplementationSpecificbackend:service:name: demo-svcport:number: 8080ingressClassName: nginx$ kubectl apply -f demo-redirect.yml ingress.networking.k8s.io/demo-redirect created 访问验证 # 302 说明已经重定向了实际效果可以通过浏览器访问查看 $ curl http://demo.kubesre.com/test/info html headtitle302 Found/title/head body centerh1302 Found/h1/center hrcenternginx/center /body /html URL重写last 通过URL重写实现访问/sre,返回的是/kube的结果可以利用重写Flag last参数当URL重写后会发送一个新的请求再次进入server块重试location匹配匹配成功直接把结果直接返回。 $ cat sre.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:nginx.ingress.kubernetes.io/configuration-snippet: |rewrite ^/sre /kube last;nginx.ingress.kubernetes.io/server-snippet: |location /sre {return 401;}location /kube {return 403;}name: demo-redirect spec:rules:- host: demo.kubesre.comhttp:paths:- path: /srepathType: ImplementationSpecificbackend:service:name: demo-svcport:number: 8080ingressClassName: nginx$ kubectl apply -f sre.yml ingress.networking.k8s.io/demo-redirect configured 访问验证 # 访问/sre则返回/kube结果403 $ curl http://demo.kubesre.com/sre/ html headtitle403 Forbidden/title/head body centerh1403 Forbidden/h1/center hrcenternginx/center /body 总结 本文介绍了 URL 重写的概念并通过实际案例的方式讲解了 URL 重写的方方面面。
http://www.sadfv.cn/news/175819/

相关文章:

  • 网站建设判断题自己创造网站平台
  • 达州网站开发广东狮山网站建设
  • 南京企业网站开发公司南庄建网站
  • 如何做营销型手机网站优化如何做网站本地服务器吗
  • 成都建设路小学网站青岛网页设计师
  • 网站服务器和网站备案网页设计与制作知到智慧树答案
  • 网站开发毕业设计文献综述十大必做调查网站
  • 临沂哪里做网站比较好网站开发所遵循
  • 北京网站建设价格天wordpress是瀑布流吗
  • 网站建设提成企业网站建设_秒搜
  • 昆明专门做网站网站首页设计制作费用
  • 网站建设 模板中心iis网站目录权限设置
  • 建设网站哪家好咨询公司有哪些
  • 专业做商铺的网站中国排建设银行悦生活网站
  • 学院门户网站建设必要性西安网站制作有限公司
  • 网站的描述 都应该写 什么 优化百度竞价做网站
  • 重庆市园林建设有限公司网站不收费的网站
  • 合肥网站建设网站制作精准引流推广平台
  • 兰州网站建设兰州vs2008不能新建网站
  • 个人做网站建筑模版东莞网站建设技术支持
  • 百度抓取网站登录怎么在自己电脑上建设网站
  • 怎么做frontpage网站上海装修设计公司排名
  • 简单的企业网站cms在网上帮做图片的网站
  • 黑龙江专业建站虚拟主机网站建设
  • 建设电影播放网站社群营销案例
  • 做网站的相关术语广告公司广告语简洁
  • led设计网站建设wordpress列表分页
  • 丽水做企业网站的地方大连云app官方下载
  • 企业策划 企业网站建设 品牌设计自定义字段wordpress
  • 蚌埠网站建设专业公司上高做网站公司