.htaccess文件里可以设置伪静态,但是你网站进行伪静态后,这样网站就会出现两个url,动态和静态,为了集中权重和用户体验,最好两个url整合在一起,这样就需要进行全站301了。
问题描述:网站程序asp.net,动态url太长,超过百度搜索框最大长度限制,用户体验差,需要进行url优化。
解决方法:对网站url进行伪静态并进行全站301。
实现过程:
1、空间或者服务器必须支持伪静态在.htaccess文件里实现,一般Linux服务器或者配置IIS6+ISAPI Rewrite 3.X的windows服务器都可以。
2、找到网站的url规则然后在.htaccess文件里设置301伪静态,测试后伪静态生效。
3、然后进行全站301永久重定向的书写,发现写好301规则后,访问伪静态的url出现404,通过各种方式以及网上搜集资料都没有找到解决方法,后来我单独尝试做301发现问题解决,同时伪静态也生效(不需要单独做伪静态)。下面来分享一下实现的代码:
网站域名:www.changgentang.com
原始url规则之一:/mediareport.aspx?c_kind=22&c_kind2=23&id=491
转换后url为:/news-22-23-491.html
这里列举几条实现全站301永久重定向的规则,其他都是通用:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
//一个变量设置全站301
RewriteRule ^sitemap-([0-9]+).html$ /sitemap.aspx?c_kind=$1&r=1 [L]
RewriteCond %{QUERY_STRING} ^c_kind=([0-9]+)$ [NC]
RewriteRule ^sitemap.aspx?$ /sitemap-%1.html? [L,R=301]
//二个变量设置全站301
RewriteRule ^news-([0-9]+)-([0-9]+).html$ /mediareport.aspx?c_kind=$1&c_kind2=$2&r=1 [L]
RewriteCond %{QUERY_STRING} ^c_kind=([0-9]+)&c_kind2=([0-9]+)$ [NC]
RewriteRule ^mediareport.aspx?$ /news-%1-%2.html? [L,R=301]
//三个变量设置全站301
RewriteRule ^zixun-([0-9]+)-([0-9]+)-([0-9]+).html$ /message_detail.aspx?c_kind=$1&c_kind2=$2&id=$3&r=1 [L]
RewriteCond %{QUERY_STRING} ^c_kind=([0-9]+)&c_kind2=([0-9]+)&id=([0-9]+)$ [NC]
RewriteRule ^message_detail.aspx?$ /zixun-%1-%2-%3.html? [L,R=301]
</IfModule>