用的服务器是iis的,幸好是有些关系,可以修改服务器的配置,不然还真只能用404方法来实现Rewrite了。404的缺陷目前来说就是搜索结果页分页错误,详见http://www.asgone.net/wordpress-search-result-pagenavi-error/。
先在网上了找了其他实现wordpress的方法,除了404方法,还有一个就是使用ISAPI_Rewrite,可惜ISAPI_Rewrite的规则好像较少: 阅读全文...
IIS下不用rewrite,使用404页面实现wordpress伪静态这种方法在网上广为流传,我从sablog转到wordpress,用了朋友的服务器,也只能用这种方法。用iis rewrite怕干扰其他网站。
不过我之前介绍过这种方有个大问题,就是不支持中文。
在网上查一些资料,才明白原因。原来带有中文的postname和tag的url其实是属于gbk编码,但是wordpress是utf-8编码。所以在404页面中要把网址转码称utf-8,这样就能完美解决404页面实现rewrite的不支持中文问题。 阅读全文...
如果是在Linux主机下,主机支持mod_rewrite的话,那就不需要费那么大的劲,但是一部分WordPress是安装在Windows主机上的,要想使伪静态就有点麻烦。我在网上找了很多wordpress的rewrite规则,但是都不敢用。wordpress又不提供标准rewrite规则,真是麻烦。 阅读全文...
在上一篇《在IIS下安装配置ISAPI Rewrite 3,实现rewrite》中介绍了ISAPI Rewrite 3 Lite的简单使用, ISAPI Rewrite 3 Lite只能配置全局httpd.conf,不能对每个站点做单独配置,可以免费使用。
但是经过实验发现了ISAPI Rewrite 3 Lite的一些问题与缺陷,主要针对的是用原msi安装文件安装的。
缺陷:这也许就是免费版的限制吧。只要全局配置文件httpd.conf里面有正确的rewrite rule,就能生效。这就造成了不想使用rewrite的站点也要受到httpd.conf的影响。
问题:不管有没有在站点的ISAPI筛选器上添加ISAPI_Rewrite.dll这个筛选器,它都是起作用的。这个问题就有可能造成严重后果。
比如:同时有两个虚拟主机,安装了discuz论坛和supesite社区,这是配置ISAPI Rewrite 3就使它们的rewrite规则有冲突。
如果这时只配置supesite社区的rewrite规则,而discuz论坛不启用伪静态,就会出现一种奇怪的现象:discuz论坛点击帖子自动回到首页。
首先去http://www.helicontech.com/download-isapi_rewrite3.htm下载最新版本的ISAPI Rewrite 3 ,有商业完整版和免费Lite版两种。
完整版的支持每个站点根目录自定义httpd.ini文件,可以免费试用45天。Lite版的只能配置全局httpd.conf,不能对每个站点做单独配置,可以免费使用。在这里我使用Lite版(ISAPI_Rewrite 3 Lite installation package)。
下载后安装到任意位置,并确定安装目录有可读写权限,安装过程没什么好说的,疯狂的点Next就好。这里有一点要说明的是,用安装程序会提示关闭Internet信息服务(IIS),安装之后就自动启动了。
比如我安装的位置是D:Program filesHeliconISAPI_Rewrite3,可以给Helicon加上everyone的读取权限,这样应该就不会遇到权限问题了。
安装完成进行配置的步骤,打开 Internet信息服务(IIS)管理器 ,在需要URL Rewrite的站点上点击右键->属性->ISAPI筛选器->添加,筛选器名称任意填,我填写的是ISAPI Rewrite,可执行文件浏览选择ISAPI Rewrite 3安装目录下的ISAPI_Rewrite.dll文件。
最后一步是要编辑ISAPI Rewrite安装目录下的httpd.conf文件,在开始菜单中也可以通过运行ISAPI_Rewrite Manager来编辑它。
举个例子,要把 domain.com/view.php?id=test 重写为 domain.com/view-test.html
可以这样写:
- RewriteRule /view-([0-9,a-z]*).html /view.php?id=$1 [L]
解决从sablog1.6升级成sablog2.0之后的rewrite问题。
从sablog1.6升级成sablog2.0之后,2.0有新的网址命名规则,rewrite规则也跟着不同了。那么原来的1.6的伪静态rewrite规则怎么在2.0里面起作用呢?
如果不起作用,原来在百度,google里面收录的内容就会出现问题,当有人从搜索引擎点击原来1.6版本网址的话,转到现在的网站却会提示找不到记录,见下图:
这样,当点击原来的1.6版本网址,http状态码返回的是200 成功,但是所有的网址的内容都是一样的,而且是“记录不存在。。。”,从seo方面,对博客来说:后果很严重。
解决方法:
经过研究,只要修改.htaccess文件就可以添加原来1.6版本的rewrite规则,让搜索引擎里面的sablog1.6版本的url不失去作用。
如:原来1.6版本的一个url是http://www.bt153.cn/show-358-1.htm 升级成sablog2.0之后的url是http://www.bt153.cn/archives/358/
通过修改.htaccess文件就可以添加原来1.6版本的rewrite规则,可以让用户访问http://www.bt153.cn/show-358-1.htm的时候自动转到http://www.bt153.cn/archives/358/,而且本解决方法利用的是301重定向,因为301重定向是Search Engine Friendly Redirect。
rewrite规则生效之后,可以到http://www.internetofficer.com/seo-tool/redirect-check/,检查url是不是301重定向。
本人使用的.htaccess文件下载: htaccess.rar
解压密码:本站域名www.bt153.cn
从sablog1.6升级成sablog2.0之后,2.0有新的网址命名规则,rewrite规则也跟着不同了。那么原来的1.6的伪静态rewrite规则怎么在2.0里面起作用呢?
如果不起作用,原来在百度,google里面收录的内容就会出现问题,当有人从搜索引擎点击原来1.6版本网址的话,转到现在的网站却会提示找不到记录,见下图:

这样,当点击原来的1.6版本网址,http状态码返回的是200 成功,但是所有的网址的内容都是一样的,而且是“记录不存在。。。”,从seo方面,对博客来说:后果很严重。
为什么URL这么重要呢?
因为所有的搜索引擎内保留了很多你原来的数据,而蜘蛛也会时常去这些老的URL转转,一旦发现没有这个数据,蜘蛛就会从数据库里把原来的链接删除。如果蜘蛛认为原来的url都不存在了,搜索引擎把以前的数据全部删除,这样一下子少了很多数据,排名也就一下子掉很多。而且会对新的网址的收录有影响,也会影响在搜索引擎里面的排名。
最好的解决方法就是把原来搜索引擎里面的1.6版本的网址301转向到现在新的2.0的版本网址,这就要修改.htaccess文件,重新添加新的rewrite规则。
目前正在修改中……
自从接触域名以来,就想了解泛域名的用处.特别是用泛域名来做无限的二级域名,不过找了一些资料,一直没有结果.
最多也就起到了泛域名的效果,*.viatop.cn(*,通配符,可是任意)都指向了viatop.cn。不过我想的结果做成二级域名,比如:
blog.viatop.cn 就是指向www.viatop.cn下面的blog文件夹,即:www.viatop.cn/blog
g.viatop.cn 就是指向www.viatop.cn下面的g文件夹,即:www.viatop.cn/g
结果一直没有实现啊,网上大多说的是利用apache的rewrite,可是一直没有成功.
不过今天又找了段代码,改写如下:
PHP代码
- RewriteEngine on
-
- RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.viatop\.cn$
- RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1
- RewriteRule ^blog.viatop.cn/(*)$ /blog/$1 [L]
于是就成就了我所说的变态结果,不过不知道是不是rewrite后的正确结果.
反正现在的情况是访问http://blog.viatop.cn不是一般泛域名解析viatop.cn了,而是显示www.viatop.cn/blog的效果. 也就是说我本来配置的博客是www.viatop.cn/blog但是现在用blog.viatop.cn也可以访问www.viatop.cn/blog里面的内容,但是打开blog.viatop.cn之后的里面的所有链接和图片仍然显示是www.viatop.cn/blog下的,这就比较奇怪了.
点了blog.viatop.cn里面的链接,地址栏里面的网址blog.viatop.cn不会变,变得只是网页里面的内容,就好像网页使用了框架一样的效果.
真不明白啊.