Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

FreeBSD7.0 + nginix0.63 +fastcgi

[复制链接]
enhand 发表于 2009-6-18 22:30:22 | 显示全部楼层 |阅读模式
服务器环境: FreeBSD7.0 + nginix0.63 +fastcgi

本地环境: windowsXPSP2 +apache2.2.4

apache的rewrite文件.htaccess是

APACHE 配置代码
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html index\.php
RewriteRule ^(my|about|setting|help|licence|register|login|logout|userinfo)\.html(.*) index\.php?m=url&a=$1$2
RewriteRule ^my-([0-9]+).html index\.php?m=url&a=my&uid=$1

根据nginx有限的文档以及Internet上先辈们的经验与实践结果。我写成了如下的格式

NGINX 配置代码
rewrite ^/index\.html$ index.php last;
rewrite ^/(my|about|setting|help|licence|register|login|logout|userinfo)\.html(.*)$ index.php?m=url&a=$1$2 last;
rewrite ^/my-([0-9]+).html$ index.php?m=url&a=my&uid=$1 last;

结果没有一个rewrite工作,整整调试了4个小时,直到凌晨2点多,nginx的rewrite就是不工作,郁闷死我了。

在ngnix的中文wiki上有句话是: 如果是 rewrite不工作,就一行一行的找问题。

我也实践了这句话,第二早上一起床就重新来捣鼓这个rewrite。

第一行我将其取消了,

换成了

NGINX 配置代码
rewrite ^/html/index$ /index.php


另我没想到的是,It Works!.

于是我有改成了

NGINX 配置代码
rewrite ^/html/(.*)$ /index.php


这样,register.html,login.html。。。。等等也都工作了。

但是,这样的话,我得改链接。

于是我又改成,rewrite也工作了。。。我就纳闷了: 难道多一个/也会怎么大的差别?

NGINX 配置代码
rewrite ^/(.*)\.html$ /index.php last;


但是,以上的测试显然还不能实现我的需要。

有了以上的实践经验后,我就开始修改为我自己需要的东东了.

1、显然也不满足我的要求,但是这两行换一个位置还是可以实现的。

NGINX 配置代码
rewrite ^/(.*)\.html$ /index.php?m=url&a=$1 last;
rewrite ^/my-(.*)\.html$ /index.php?m=url&a=my&uid=$1 last;


2、于是换成

NGINX 配置代码
rewrite ^/([a-zA-Z]+)\.html$ /index.php?m=url&a=$1 last;
rewrite ^/my-(.*)\.html$ /index.php?m=url&a=my&uid=$1 last;


结果不工作。。,郁闷。

再改

NGINX 配置代码
rewrite ^/(index|my|about|setting|help|licence|register|login|logout|userinfo)\.html$ /index.php?m=url&a=$1 last;
rewrite ^/my-(.*)\.html$ /index.php?m=url&a=my&uid=$1 last;


这次工作了。。。

为了只对伪html才使用rewrite,我还增加了一个判断,最终的配置如下

NGINX 配置代码
if (!-e $request_filename) {
rewrite ^/(index|my|about|setting|help|licence|register|login|logout|userinfo)\.html$ /index.php?m=url&a=$1 last;
rewrite ^/my-(.*)\.html$ /index.php?m=url&a=my&uid=$1 last;
}




Ngnix的rewrite还是没有apache的用起爽。

而且不支持.htaccess,这个是最郁闷的。每次修改了Ngnix的rewrite配置,都需要重启动Ngnix。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-10-14 11:39 , Processed in 0.082843 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表