- A+
博客之前用固定链接是%post_id%.html
链接形式:http://www.zhangjianqun.com/1.html
为了以后更改 改成了 更改成了/%category%/%post_id%.html
链接形式:http://www.zhangjianqun.com/cmo/1.html
重定向伪静态规则 RedirectMatch 301 ^/(\d+).html$ /(.+)/$1.html
目标url: http://www.zhangjianqun.com/cmo/1.html
我网站的伪静态规则
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
RedirectMatch 301 ^/(\d+).html$ /(.+)/$1.html
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
下面详细讲解下:
wordpress一旦更改了固定链接,那么多的死链对于网站来说绝对是个麻烦,使用插件终究不是个办法,我还是用.htaccess来实现吧。
谈到.htaccess,就不得不说正则表达式中的一些符号解释:
(.+) 对应的是任意字符(包括汉字、英文字母等)(\d+)对应的是任意数字(仅仅是阿拉伯数字)$1 $2 $3 是前面出现过的变量的再次引用
-
简单的301重定向示例
1.1.示例一
更改http://www.zhangjianqun.com/%year%/%monthnum%/%day%/%postname%/
为
http://www.zhangjianqun.com/%postname%.html
重定向语句:RedirectMatch 301 ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*)/$ /$4.html
RedirectMatch 301 ^可以理解为语句正式开始,中间三个([0-9]+)可以理解为分别对应%year%/%monthnum%/%day%,(.*)可以理解为最后的文章名称或者ID,这四个变量分别可以赋予编号$1,$2,$3,$4。(.*)和$4.html之间的那个$可以理解为老网址和新网址之间的分割。
我们要修改的,就是把地址中的日期全都不要了,只要第四部分的文章名,然后在文章名后面加上.html来实现伪静态
也就是说,那三个([0-9]+)都不要了,只要(.*)部分,而(.*)对应于$4,所以现在的网址只写上$4.html就行了,也就是以前的(.*).html
1.2.示例二
/%post_id%修改为/%category%/%post_id%.html
因为%post_id%肯定是数字,而上面说过,正则表达式中(\d+)对应任意数字,所以以前的网址可以写成/(\d+)
而%category%是分类,肯定是字符,不管是汉子还是字母,正则表达式中(.+) 对应的是任意字符(包括汉字、英文字母等),所以新的网址可以写成/(.+)/(\d+).html
在原网址中,%post_id%即(\d+)对应于$1,所以新网址为/(.+)/$1.html
然后用$将新旧网址连接起来,写成301重定向语句,即为:
RedirectMatch 301 ^/(\d+)$ /(.+)/$1.html
-
我是怎么修改的?
我是从* /archives/123的形式改为*/article/$1.html的形式,语句如下:
RedirectMatch 301 ^/archives/(\d+)$ /article/$1.html
-
该如何写自己的重定向语句
首先:你要弄清楚自己的原网址每一部分是什么形式,数字?字符?然后分别用上面的正则表达式符号来对应,(.+) 对应的是任意字符(包括汉字、英文字母等),(\d+)对应的是任意数字(仅仅是阿拉伯数字)
因为文章名称中可能含有字母,可能含有数字,所以要用(.*)来对应,(.*)表示任意的东西
然后:将原网址每一部分分别对应,按照顺序,依次用$1/$2/$3/$4/$5来对应
再然后:写出新网址,按照写原网址的规则来写,不再累赘
最后:用$来连接新旧网址,写成301重定向语句(新网址中与原网址相同的部分要用符号来代替,用$1、$2、·····来代替)
注意,$和后面的新网址之间有一个空格。而且,如果原网址最后有/的话,在$之前也必须有一个/
-
使用301重定向该注意什么?
1、有个问题,wordpress的.htaccess文件被自动更改(自动还原)wordpress会自动修改.htaccess文件中# BEGIN WordPress和# END WordPress的内容,即使你并没有修改过固定连接。只要点击了“固定连接”,.htaccess文件中# BEGIN WordPress和# END WordPress之间的内容就会被更改,自动还原。这是wordpress的一个令人讨厌的问题。
怎么解决呢?最好的解决方法是:把自己添加在.htaccess中的语句,写在# BEGIN WordPress和# END WordPress之外,比如我的:
RedirectMatch 301 ^/archives/(\d+)$ /article/$1.htmlRedirectMatch 301 ^/(\d+)$ /article/$1.html# BEGIN WordPress<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ – [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]</IfModule># END WordPress
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫