升东运维是一家专业从事Linux/Freebsd Unix/Windows平台网站维护业务的公司,专业提供Linux(CentOS Redhat Ubuntu等),Unix(Freebsd),Nginx,Apache等系统及网站维护,七年从业经验

Posts Tagged ‘rewrite’

Nginx discuz论坛伪静态规则

星期日, 六月 5th, 2011

适用于discuz7.2及之前版本
Nginx实例配置代码

server {#discuz相关产品
listen 80;
server_name www.dz.com dz.com *.dz.com;
root /var/www/discuz;
location / {
rewrite ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2 last;
rewrite ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3 last;
rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3 last;
rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3 last;
rewrite ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2 last;
}
include server.conf;#其他配置,自己修改

}

Nginx codeigniter2.0 去除index.php实例代码

星期日, 六月 5th, 2011

网上查了资料,貌似大都只解决了一部分问题,我总结了下,自己又写了一些规则,基本实现了CI的apache的相同效果
需要注意的是,CI必须在配置config/config.php指定网站url,因为在一些情况下,CI无法获得真实url,这个问题还没解决
另外需要把$config[‘index_page’] = ”;设为空
$config[‘uri_protocol’] = ‘REQUEST_URI’;
并在程序中不要出现带index.php的url
以下是nginx配置实例,注意include fastcgi_params;fastcgi_params文件里面不要添加fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
http://www.ppkj.net

此配置在Nginx0.93 CI2.0,php-fpm5.2.16下通过

server {
listen 80;
server_name www.ppkj.net;
root /var/www/ppkj;
############################################################————————–
index index.html index.htm index.php;
#limit_conn crawler 20;
############################################################———–下面的三个配置顺序不能更改—————
location / {
if ($request_filename !~* “(\/index.php|\/index.html|images/|js/|style/|uploadfile/|html/|third_party/kindeditor/|robots\.txt|favicon\.ico)”) { #前面为需要能够直接访问的目录和文件,目录必须加/,否则一些url如果包含目录名,则不再重写,第一个index.php要保留
rewrite ^\/(.*)$ /index.php/$1 last; #重写所有其余访问到index.php
}
}

location /index.php {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/ppkj/index.php;#这里和下面的不一样,必须指定为实际index.php地址
}
location ~ .*\.php?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;

}
}

apache重写,匹配主机头

星期四, 六月 2nd, 2011

#匹配主机头是否含有wap,(.*)表示后面任意,比如.ppkj.net,[NC]表示忽略大小写
RewriteCond %{HTTP_HOST} ^wap(.*)$ [NC]
#将根目录的访问定向到wap.php
RewriteRule ^$ wap\.php

RewriteCond %{HTTP_HOST} ^wap(.*)$ [NC]
#将http://wap.ppkj.net/login/中的login匹配到$1,$1代表第一个括号的内容,第二个是$2
#[QSA]表示保留原有的query_string参数 比如?a=1&b=2
RewriteRule ^(.*)\/$ wap\.php\?part=$1[QSA]