记录生活 学习SEO优化 | 他日若遂凌云志 敢笑黄巢不丈夫
>>Home > 学习笔记 > vps记录 > 学习笔记 > UCHOME在nginx下的伪静态出错

UCHOME在nginx下的伪静态出错

Tags: | | 作者:海天无影

由于海天的服务器前段时间因为全选问题,ssh连不上去,WEB以及FTP也不能创建文件,没办法只能选择重装系统。由于前段时间工作比较忙,所以一拖再拖,终于再上个星期的周末把服务器重装了,在这里感谢一下vps客服的细心指导以及备份文件。

好了,来说一下本文的重点吧,因为重装了系统,平台也从原来的lnamp换到现在了lnmp,所以网站的伪静态也要跟着一起处理,海天的一个UCHOME网站添加了伪静态后就直接报错,本来是以为htaccess转换出错的,但是后来找了网上的几个nginx下的UChome的伪静态同样被报错。后来海天对比了discuz在nginx下的伪静态规则,发现nginx下的伪静态还是和apache下的除了写法不一样之外,规则也有很多不一样的,我们先来看下apache下的uchome的伪静态:

RewriteEngine On
RewriteBase /
RewriteRule ^(space|network)\-(.+)\.html$ $1.php?rewrite=$2 [L]
RewriteRule ^(space|network)\.html$ $1.php [L]
RewriteRule ^([0-9]+)$ space.php?uid=$1 [L]

然后通过网上的nginx的伪静态规则转换工具http://www.anilcetin.com/convert-apache-htaccess-to-nginx/转换得到:

if ($rule_0 = ""){
rewrite ^/(space|network)-(.+).html$ /$1.php?rewrite=$2 last;
}
if ($rule_1 = ""){
rewrite ^/(space|network).html$ /$1.php last;
}
if ($rule_2 = ""){
rewrite ^/([0-9]+)$ /space.php?uid=$1 last;
}
if ($rule_0 = ""){ rewrite ^/(space|network)-(.+).html$ /$1.php?rewrite=$2 last;}if ($rule_1 = ""){ rewrite ^/(space|network).html$ /$1.php last;}if ($rule_2 = ""){ rewrite ^/([0-9]+)$ /space.php?uid=$1 last;}

将上面转换后得到的规则复制到规则conf文件中,好了,重启nginx的时候,就会提示报错,不能启动nginx,不过我看网上很多人用类似的代码都没有反馈上面,难道他们都可以正常使用?

好了,这里大家都会以为是那个转换程序的错,其实这个只是nginx处理规则和apache不一样罢了(会不会是因为nginx的版本不同的原因?我用的lnmp一键0.9版本),海天对比了discuz的nginx伪静态规则发现,貌似应该是转换后的规则第一条和第二条冲突了,我将第二条去掉以后,就正常启动nginx了,而且网站的访问也没有出错的页面,至此问题解决。

但是,到底什么原因,海天只是认为nginx不能处理类似第一条和第二条这样的同个文件但多个参数的规则。

PS:网上说nginx的伪静态规则不支持正则,原话如下:

原有的url支持正则  重写的url不支持正则
rewrite ^/(\d+)\.home$ /index.html?userId=$1 last;
这个重写中 ^/(\d+)\.home$ 这部分支持正则
而/index.html?userId=$1
不要用正则 也不匹配正则 /index.html?*userId=$1 这样他就会去找.html?*userId=$1这个url 然后给你个404 not found

日志信息 »

该日志于2012-08-21 18:34由 海天无影 发表在vps记录, 学习笔记分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下转载到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

没有评论▼点击进行评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif 

« 8月10日百度站长平台门诊日部分问答整理 localhost和127.0.0.1的区别 »