标签: 伪静态

Typecho的伪静态规则

一、Apache

RewriteEngine On # 下面是在根目录,文件夹要修改路径,如 /typecho/,同时 RewriteRule 也要跟着变

RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]

外加一个顶级域名和二级域名的跳转

# 带 www 的跳转到不带的
RewriteCond %{HTTP_HOST} ^www.moper.me
RewriteRule (.*) https://moper.me/$1 [R=301,L]

# 不带 www 的跳转到带的
RewriteCond %{HTTP_HOST} ^moper.me
RewriteRule (.*) https://www.moper.me/$1 [R=301,L]

注:最新的 SVN 在后台启用重写功能的时候能自动生成 .htaccess 文件。

二、Nginx

location / {
index index.html index.php;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php) {
rewrite (.*) $1/index.php;
}
if (!-f $request_filename) {
rewrite (.*) /index.php;
}
}

三、SEA

name: taoblogs
version: 1
#cron:
# - description: cron test
# url: index.php
# schedule: every 43 mins
# timezone: Beijing
handle:
- rewrite: if(!is_dir() && !is_file()) goto "index.php?%{QUERY_STRING}"

四、IIS 下的 httpd.ini

不完美,可参考修改。

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# 中文tag解决
RewriteRule /tag/(.*) /index\.php\?tag=$1
# sitemapxml
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# 内容页
RewriteRule /(.*).html /index.php/$1.html [L]
# 评论
RewriteRule /(.*)/comment /index.php/$1/comment [L]
# 分类页
RewriteRule /category/(.*) /index.php/category/$1 [L]
# 分页
RewriteRule /page/(.*) /index.php/page/$1 [L]
# 搜索页
RewriteRule /search/(.*) /index.php/search/$1 [L]
# feed
RewriteRule /feed/(.*) /index.php/feed/$1 [L]
# 日期归档
RewriteRule /2(.*) /index.php/2$1 [L]
# 上传图片等
RewriteRule /action(.*) /index.php/action$1 [L]

以下好像是WP的,只做参考用

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]

注:记得到后台永久链接设置里,启用地址重写功能。

转自http://zhangtao.cc/jiaocheng/typecho_rewrite.html

帝国官方sitemap插件伪静态

其实发现帝国cms还是有些很不人性化的地方,比如tag和sitemap,这种大众的功能不能够做好一点点么?帝国的插件社区应该壮大一点才是啊,这么好的cms应该有很多人推动才是。

回归正题,想修改成的格式为
主页产生格式sitemap.xml
栏目产生格式sitemap1.xml

首先在官方插件的sitemap.php中修改了输出格式。
具体的是把

sitemap.php?classid=

修改为

sitemap.xml

相应的nginx伪静态如下

rewrite "^/sitemap\.xml$" /sitemap.php last;
rewrite "^/sitemap([0-9])\.xml$" /sitemap.php?classid=$1 last;

这里提供修改好的官方sitemap.php下载

帝国官方sitemap插件moper修改版
帝国官方sitemap插件

使用方法
1、将sitemap.php文件上传到帝国安装根目录中
2、在robots.txt文件中加入下面这行:
sitemap: http://你的域名/sitemap.xml

diypage的html后缀伪静态

这个功能爽爽要我500块,没钱啊,所以自己动手丰衣足食吧。
经过不懈的努力diypage的伪静态调整完成,把/abc-111/的伪静态转换成了/abc.html的形式了。思路是采用了输出缓存的更改。把输出的全文用正则替换的方法改变了输出形式。

nginx规则
原版

rewrite "^/([a-z0-9]+\-[a-z0-9\-]+\/)$" /index.php?$1 last;
rewrite "^/(dp\-+[a-z0-9\-]+\.html)$" /index.php?$1 last;
rewrite "^/(pagetype\-+[a-z0-9\-]+\.html)$" /index.php?$1 last;

新版

rewrite "^/([a-z0-9]+\-[a-z0-9\-]+\.html)$" /index.php?$1 last;
rewrite "^/(dp\-+[a-z0-9\-]+\.html)$" /index.php?$1 last;
rewrite "^/(pagetype\-+[a-z0-9\-]+\.html)$" /index.php?$1 last;

实测可用的输出改变代码,加在diypage的index.php的里面。

ob_start();
function change_image_domain(){
$output = ob_get_contents();
ob_clean();
$aaaaa='/([a-zA-Z]+)-([0-9]+)(\/)+/';
$bbbbb='$1-$2.html';
$output=preg_replace($aaaaa,$bbbbb,$output);
$aaaaa2='/([a-zA-Z]+)-([0-9]+)-([0-9]+)(\/)+/';
$bbbbb2='$1-$2-$3.html';
$output=preg_replace($aaaaa2,$bbbbb2,$output);
//$output = str_replace('?view-17/','view-17.html',$output);
echo $output;
}
register_shutdown_function('change_image_domain');

注意,需关闭diypage的gzip功能。亲测有效,使用的请留言交流哈。

hataccess的写法

绑定域名到子目录 Apache

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1
# 没有输入文件名的默认到到首页
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$
RewriteRule ^(/)?$ blog/index.php [L]

下面我开始解说一下上面的意思: 阅读详细 »

伪静态引起robots出错

写的好好的robots怎么就是用谷歌的网站管理员工具读不出来,一直读的都是那个什么虚拟robots,原来……是伪静态惹的祸。
由于用的是ISAPI_REWRITE+httpd.ini在httpd.ini中添加RewriteRule /robots.txt /robots.txt [L]就可以了。
谷歌网站管理员工具地址http://www.google.cn/webmasters/

在论坛上问有关虚拟robots的事儿,好像懂的人不多。只说了个地址在wp-includes -> functions.php -> do_robots()
也看不太明白,这个有什么改的呢,怎么改呢。不过也没什么好研究的了,直接自己写robots就完了,注意伪静态问题哦:) 阅读详细 »

完美解决wordpress在wimp下的伪静态问题

折腾了好长时间,终于完美解决了,但是觉得速度很慢,不知道是空间问题还是在wimp环境下。有机会还是换linux主机的好。

本站采用的wimp(windows+iis+mysql+php)环境,wordpress固定连接为/%postname%.html

httpd.ini文件如下

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through 阅读详细 »

解决WORDPRESS在IIS下伪静态后子目录无法访问的问题

近几日想给博客加上一些别的页面,自然要用到子目录。没想到访问所有非WP-开头的子目录内容都显示:哦!您要找的日志可能已经更换地址,重新搜索一下吧,或者点击这里回首页看看吧(估计是都转到404页面去了)。看样子WP还真有的高深莫测,令我丈二和尚摸不着头脑啊,后找了不少资料才基本解决此问题,方法是修改伪静态规则文件httpd.ini:
原文内容是: 阅读详细 »

通过伪静态规则实现子目录绑定

通过伪静态规则实现子目录绑定:apache+.htaccess或IIS+ISAPI_REWRITE+httpd.ini

Apache HTTP Server一般安装在类Linux服务器上,默认支持URL重写,一般虚拟主机用户将.htaccess文件放网站根目录就可以实现伪静态了,使用下面的伪静态规则就可以实现子目录绑定。

RewriteEngine on
# 把 ip.caoger.net 改为你要绑定的域名,把 IPdir 改为要绑定的目录
RewriteCond %{HTTP_HOST} ^(www.)?ip.caoger.net$
RewriteCond %{REQUEST_URI} !^/IPdir/ 阅读详细 »