PHP-Nginx Rewrite失败,请教一下怎么改?

发布于 2017-02-04 18:18:33 字数 1581 浏览 1359 评论 1

我基于PHP开发了一个短网址程序,之前放在Apace服务器上面,运行很正常,但是转到Nginx服务器上面之后,我自己写了新的Rewrite规则,但是URL重写老是失败。在Chrome下面会下载PHP源码文件,在IE下会直接输出PHP源码。我想把类似'oooo. com/r.php?id=xxx'的网址转换成'oooo. com/xxx'形式。我的短网址程序的Nginx配置文件内容如下:

server {
listen 80;
server_name oooo.com www.oooo.com;
access_log off;
index index.html index.htm index.jsp index.php;
include none.conf;
root /home/wwwroot/oooo.com;
#rewrite_log on;
#error_log logs/oooo-error.log notice;
location / {
#index index.html index.htm index.php;
rewrite ^/([a-zA-Z0-9_-]+)$ /r.php?id=$1 break;
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;
}
}
#error_page 404 /404.html;
if ( $query_string ~* ".*[;'<>].*" ){
return 404;
}
location ~ .*.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
valid_referers none blocked *.oooo.com oooo.com www.oooo.com;
if ($invalid_referer) {
#rewrite ^/ http://www.linuxeye.com/403.html;
return 403;
}
}

location ~ .*.(php|php5)?$ {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}

location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
}

location ~ .*.(js|css)?$ {
expires 7d;
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2017-04-14 06:54:00

我记得nginx本身是不支持php的解析执行的吧?你通过fastcgi接口调用试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文