首页 > 编程知识 正文

301重定向最佳方案(js正则匹配url)

时间:2023-05-04 05:33:14 阅读:77283 作者:1947

由于我们网站的二次开发,网站页面的url生成规则往往发生了变化,但网站中包含了排名。 url地址的更改如果不进行处理,将影响排名和收录。 那么,现在该怎么办?

这个时候一定要使用301重定向。 请将旧的url地址指向新的url地址,提交给站长平台。 基本上,url地址的更改不会影响原始网站的排名。

但是,如果你的url数量变化很多,会一一配置吗? 猴子的岁月不会结束,但正则表达式可以完美解决这个问题,只需要几个公式配置就可以完美匹配。

首先,请仔细阅读以下说明,理解各符号有什么意义。 脑子里有印象,自己配置调试的时候参考。

将以下字符标记为特殊字符、原义字符、向后引用或八进制转义字符: 例如,' n '匹配字符' n '。 “n”与换行符匹配。 序列"\ "与""匹配,"" ("与" "匹配。

^匹配输入字符串的开始位置。 如果设置了RegExp对象的Multiline属性,^还将匹配“n”或“r”及更高版本的位置。

$与输入字符串的结束位置匹配。 如果设置了RegExp对象的Multiline属性,$还将匹配“n”或“r”之前的位置。

*与前面的子表达式一致0次以上。 例如,zo*与“z”和“zoo”匹配。 等效于*{0,}。

匹配前面的子表达式一次以上。 例如,“zo”匹配“zo”和“zoo”,但不匹配“z”。 与{1,}等价。

? 匹配上一个子表达式0次或1次。 例如,' do(es )?' 可以与do或“does”中的“do”匹配。 等效于(0,1 )。

{n} n是一个非负整数。 一致的n次。 例如,“o”与“o”的“o”不匹配,但与“food”的两个o匹配。

{n,} n是非负整数。 至少匹配n次。 例如,' o{2,} '与' Bob '上的' o '不匹配,但与' foooood '上的所有o匹配。 ' o{1,} '等效于' o '。 ' o{0,} '等效于' o* '。

{n,m} m和n都是非负整数。 在此,n=m。 最少匹配n次,最大匹配m次。 例如,“o { 1,3 }”与“fooooood”的前三个o相匹配。 ' o { 0,1 } '是' o?' 中选择所需的墙类型。 请注意不要在逗号和两个数之间留有空格。

? 此字符是其他限制符号之一(*,{n}、{n,}、{n,m}}后面时,匹配模式不贪婪。 不贪婪模式尽量与搜索到的字符串匹配,默认贪婪模式尽量与搜索到的字符串匹配。 例如,字符串' oooo ',' o?' 对匹配一个“o”,“o”匹配所有“o”。

.匹配除“n”以外的任意一个字符。 要匹配包含“n”的任何字符,请使用类似“[.n]”的模式。

(pattern )与pattern一致,获取该一致。 检索到的匹配可以从生成的Matches集合中检索。 VBScript使用SubMatches集合,而JScript使用$0…$9属性。 要匹配括号中的字符,请使用“”或“”。

(? 3360pattern(pattern )与pattern匹配,但无法获得匹配结果。 也就是说,这是非获取匹配,不保存以供以后使用。 使用'或'字符(|)组合图案的各个部分非常有用。 例如,' industr (? y )是比“行业”更简单的表达式。

(?=pattern ) )进行正向预检查,在匹配pattern的字符串开头匹配搜索字符串。 这是非获取匹配,不需要获取以供今后使用。 例如,' Windows (?=95|98|NT|2000 ) '与' Windows 2000 '上的' Windows '匹配,但与' Windows 3.1 '上的' Windows '不匹配。 印前检查不消耗文字。 也就是说,在发生某个匹配后,在最后一个匹配后立即开始搜索下一个匹配。 不是从包含印前检查的字符之后开始。

(? pattern ) )负向预检查。 在与pattern不匹配的字符串的开头与搜索字符串匹配。 这是非获取匹配,不需要获取以供今后使用。 例如' Windows (? 95|98|NT|2000 ()与Windows 3.1中的Windows匹配,但与Windows 2000中的Windows不匹配。 预先检查不消耗文字。 也就是说,在产生一个匹配之后,最后

一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。

[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。

[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围 内的任意字符。

b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能 匹配 "verb" 中的 'er'。

B 匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

cx 匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之 一。否则,将 c 视为一个原义的 'c' 字符。

d 匹配一个数字字符。等价于 [0-9]。

D 匹配一个非数字字符。等价于 [^0-9]。

f 匹配一个换页符。等价于 x0c 和 cL。

n 匹配一个换行符。等价于 x0a 和 cJ。

r 匹配一个回车符。等价于 x0d 和 cM。

s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。

S 匹配任何非空白字符。等价于 [^ fnrtv]。

t 匹配一个制表符。等价于 x09 和 cI。

v 匹配一个垂直制表符。等价于 x0b 和 cK。

w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。

W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。

xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如, 'x41' 匹配 "A"。'x041' 则等价于 'x04' & "1"。正则表达式中可以使用 ASCII 编码。.

num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)1' 匹配两个连续的相同字符。

n 标识一个八进制转义值或一个向后引用。如果 n 之前至少 n 个获取的子表达式,则 n 为向后引用。否 则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

nm 标识一个八进制转义值或一个向后引用。如果 nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。 如果 nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 nm 将匹配八进制转义值 nm。

nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号 (?)。

<?xml version="1.0" encoding="UTF-8"?>这里来举个例子,http://www.bai.com/nihao/03026.html是原来的页面,而现在的页面是http://www.bai.com/nihao/3026.html,发现什么没有,url地址数字前面的0没了。这里,为大家讲解的是web.config配置。配置如下:

<configuration>

<system.webServer>

<rewrite>

<rules>

<rule name="301Redirect" stopProcessing="true">

<match url="^(.*/)(0+)([1-9]+)([0-9]+).html(.*)" />

<action type="Redirect" url="{R:1}{R:3}{R:4}.html" redirectType="Permanent" />

</rule>

</rules>

</rewrite>

</system.webServer>

</configuration>

^(.*/)(0+)([1-9]+)([0-9]+).html(.*)是以前的规则

{R:1}{R:3}{R:4}.html是现在的规则

这里讲讲()、[]和{}的区别:

正则表达式的() [] {}有不同的意思。

() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。

(s*)表示连续空格的字符串。

[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[s*]表示空格或者*号。

{}一般用来表示匹配的长度,比如 s{3} 表示匹配三个空格,s[1,3]表示匹配一到三个空格。

(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。

[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。

最后,把配置文件web.config放到网站根目录就可以了,接着再向站长平台“网站改版”模块提交下url规则重定向,这样网站301重定向问题就完美解决了。其他url格式自己可以参考上面表格配置替换。有什么问题可以留言,热心的网友和小编会为你解答的哦。

如果让你用正则表示http://www.bai.com/nihao/03026.html和 http://www.bai.com/nihao/03026.html,你可以替换出来吗?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。