ShowDoc在nginx下的重定向规则
----2016.5.18更新说明:新版ShowDoc已无须写重定向规则(当然写了也可以兼容)------
某些版本的nginx不支持PATHINFO,导致访问showdoc的时候可能出现404错误。本文将对此提供一个解决方案。
首先请你确保安装了nginx+php环境,完整教程可参考某网友写的:http://blog.csdn.net/tde007/article/details/50212001 。
在nginx.conf文件添加以下内容:
location / {
if (!-e $request_filename) {
rewrite ^/index.php/(.*)$ /index.php?s=$1 last;
rewrite ^/(.*)$ /index.php?s=$1 last;
break;
}
}
以上规则是对于安装在网站根目录的情况。如果是安装在二级目录,如"wu.com/showdoc",则:
location /showdoc/ {
if (!-e $request_filename) {
rewrite ^/showdoc/index.php(.*)$ /showdoc/index.php?s=$1 last;
rewrite ^/showdoc/(.*)$ /showdoc/index.php?s=$1 last;
break;
}
}
如无特殊说明,本站皆为原创。转载请注明来自第七星尘的独立博客的《ShowDoc在nginx下的重定向规则》
2016-03-05
编程技术
if (!-e 无法识别啊 ,更改错误
我把showdoc部署在了ubuntu 14.04上 部署完之后改完权限浏览器可以访问showdoc主页 但是在注册的时候会报错
could not find driver
错误位置
FILE: /var/www/html/showdoc-master/ThinkPHP/Library/Think/Db/Driver.class.php LINE: 109
这个是什么问题呀?
你是使用Mysql?如果是则安装php-pdo;如果是sqlite,试试在phpinfo里检测是否加载了php-sqlite。类似的问题可以先网上搜索下http://www.111cn.net/database/mysql/46123.htm
嗯 我看着收拾了一下 现在注册登录都没问题了 但是发现一个新问题就是创建完项目之后点开项目的时候提示模版不存在
模板不存在:./Application/Home/View/Item/Show.html
错误位置
FILE: /var/www/html/showdoc-master/ThinkPHP/Library/Think/View.class.php LINE: 110
这个是什么原因呀,网上的资料不知道该从哪方面下手查
如果你开启了index.php的debug,请关闭之
嗯 关掉之后的确可以了 非常感谢大神的耐心指导 非常感谢
毕竟还是按照apache来定制的, nginx下面的问题太多了,虽说开源吧,.,,可是联系方式的回复太慢. 也就折腾到这里就止步了
2016.5.18更新说明:新版ShowDoc已无须写重定向规则(当然写了也可以兼容)
感谢提供这么好的系统。不过有个问题,导出的word好丑,表格也没边框,现在有计划在改善这个功能么?
word不太好处理,所以暂时无花精力去优化的计划
博主,我在你的在线文档里面注册了账号,结果密码忘记了,怎么找回密码啊。。。我的api文档都不能修改了。。。
把你的账号以及项目名称发到我邮箱
http://api2.crap.cn http://api.crap.cn java版开源API接口管理系统
如果单纯只是用作接口的话,其实RAP是个更好的选择
http://docs.ocms.cc/index.php/home/item/show?item_id=2 => Access denied.
http://docs.ocms.cc/home/item/show?item_id=2 => 正常。按照文章内的rewrite写的。问题很多啊
同作者文章:只需要改两个地方:
1.修改index.php入口文章,添加:
define(‘__APP__’, ”);
2.修改vhost的conf
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=$1 last;
break;
}
}
大神,我现在登录首页可以了,demo和教程也可以了,就是注册时返回验证码不正确,然后点击返回首页时报错,
无法加载模块:Index
错误位置
FILE: /mnt/www/showdoc/ThinkPHP/Library/Think/Dispatcher.class.php LINE: 178
哥们儿,写的接口文档在你的网站丢失了啊
一直访问正常,没发现什么异常。你发下你账号到我邮箱
知道问题在哪了。在百度上搜showdoc搜到的不是你的服务。是一个公司的。他们把服务停止了。现在开始在你的服务上写文档就没事了。。。谢谢哥们
对此我也无力,百度居然不让原创的放在前头
很急啊,登录的时候验证码显示不出来~~~我是用的nginx
验证码不出来请搜索安装php-gd模块
我重新编译了一下,现在能显示了,但是提交注册的时候为什么一直提示验证码错误
大概php的session目录没权限吧
拿我全部都附一下777权限吧
session.save_path = “/tmp” tmp有权限,还是提示验证码错误
试着打印session的值出来看看是否相等;如果你不是php程序员,大概我也不知道如何帮你调试了
你重写的代码发来我看看
使用nginx,那么就不需要mysql了么
需要
127.0.0.1 /api/list/22?cat=0&filter=3a8_9a12_13a17
ERR: 无法加载模块:List
原来不支持7.0
删除Application/Runtime/目录下所有文件(缓存来的),以后,重新启动php和nginx,但是什么都没有了,求大神回复
给予权限了吗;重定向规则写好了没;
在我没有删除缓存之前可以正常登陆,就是注册时报错,但是删除缓存以后,不能登录首页了,望大神指点
现在可以登录了,但是不能进行点击操作,会报错,系统错误“ThinkPHP3.2.3 { Fast & Simple OOP PHP Framework } — [ WE CAN DO IT JUST THINK ]”
[ 2016-03-21T16:47:43+08:00 ] 127.0.0.1 /api/list/22?cat=0&filter=3a8_9a12_13a17
ERR: 无法加载模块:List
/api/list ?showdoc没有这个模块和控制器。不知道你哪里访问的
404 Not Found
nginx
没有什么提示
首页可以打开
写好重定向规则后重启nginx让它生效
location /api/ {
if (!-e $request_filename) {
rewrite ^/api/index.php(.*)$ /api/index.php?s=$1 last;
rewrite ^/api/(.*)$ /api/index.php?s=$1 last;
break;
}
}
rewrite ^/api/index.php(.*)$ /api/index.php?s=$1 last;
rewrite ^/api/(.*)$ /api/index.php?s=$1 last;
请把上面的重定向原样复制过去
我上传的是根目录下.的api下面,目录也改成api了?
安装在网址跟目录的是第一个规则,安装在网址的二级目录如wu.com/showdoc的是第二个规则。
必须要showdoc吗?
不是必须;看你的重定向规则是没错了的。不知你环境是否还有其他干扰
定向应该是可以,因为首页可以访问到!就是点登录后就出来404,这个和数据库有关系吗
访问首页不需要重定向,所以能访问;而其他页面需要。出现404应该就是重定向不知道重哪里去了。你尝试清除缓存看看吧
我在试试看,一会在留言
server {
listen 8021;
server_name showdoc;
location / {
root E:/testweb/showdoc;
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
break;
}
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .php/?.*$ {
root E:/testweb/showdoc;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#加载Nginx默认”服务器环境变量”配置
include fastcgi.conf;
#设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ “^(.+.php)(/.+)$”) {
set $fastcgi_script_name2 $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
}
}
我的完整教程,完美
哦,我知道了,在新建目录里边可以删除以前建过的目录。
大神,我又来了,项目下的目录,貌似没有删除选项,一旦需要想调整目录,整个项目得重新推倒重来,这个是不是改一下?
博主,应该增加个下载真个项目为html的功能,页面好看,导出来的word难看。。
嘿嘿。
它本身就是网页,何必要导出为网页。直接发个在线地址给别人看不就得了
在导入mysql时,是新建一个名为showdoc的数据库吧
数据库名为何不重要,在配置里改即可
大神,点击注册时 “Undefined class constant ‘MYSQL_ATTR_INIT_COMMAND’
错误位置
FILE: /mnt/www/showdoc/ThinkPHP/Library/Think/Db/Driver/Mysql.class.php LINE: 36
”
大神,验证码返回不正确怎么破?在注册时一直提示验证码不正确,点击返回首页是还出现无法加载的情况
感谢大神,现在可以了,刚才是session没有权限,谢谢大神
PHP Fatal error: Undefined class constant ‘MYSQL_ATTR_INIT_COMMAND’ in /mnt/www/showdoc-master/ThinkPHP/Library/Think/Db/Driver/Mysql.class.php on line 36
终于搞定了。。。
总结一下,首先,因为 nginx.conf修改的时候多个大括号,后来重启nginx,才发现配置文件错误,然后修正。
然后,注册页面 没有提示信息,白框,360浏览器。后来换了谷歌浏览器解决。
第三个问题是我本地root访问mysql总是报没有权限,远程可以访问,localhost不行,最后至少配成了具体的ip,也解决了。
辛苦博主耐心指导,辛苦辛苦。。[害羞]
清了下缓存可以了,谢谢了。。[挖鼻屎][兔子]
demo 和教程 连接是 系统错误。
🙁
页面错误!请稍后再试~
ThinkPHP3.2.3 { Fast & Simple OOP PHP Framework } — [ WE CAN DO IT JUST THINK ]
部署时出错,请先确认是否按照上面步骤执行(例如说目录权限有没有)。然后进Application/Runtime/Log看一下日志,或清除下Application/Runtime/目录下所有文件(缓存来的)试试
目录下没有日志,是权限的问题么,大神
没有日志有两种情况,一是重定向错误导致根本没访问到showdoc,自然不会有日志;二是没有写日志权限
我刚才一直没重启nginx….重启之后注册可以进去了,但是貌似js有问题,只能显示 字符框,但是没有对应的提示字符,能截图就好了。
[root@localhost Logs]# ls -lrt
total 0
空的。
不行啊~~
完整教程是
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
我的nginx
location /showdoc/ {
if (!-e $request_filename) {
rewrite ^/showdoc/index.php(.*)$ /showdoc/index.php?s=$1 last;
rewrite ^/showdoc/(.*)$ /showdoc/index.php?s=$1 last;
break;
}
}
首页能看到说明已经定位到/showdoc/了
但是 /showdoc/index.php/home/user/login 就找不到在哪儿了,这是哪儿的问题?
/showdoc/index.php/home/item/show?item_id=2 这些都找不到。
看看ApplicationRuntimeLogs日志有没有说什么
我也是这样,登录成功跳转后一片空白。没有错误日志
能登录成功则证明重定向功能是没问题的了。试着重启下吧
还是不行,除了首页 其他都是404
我试过这代码是可行的。你试着按完整教程弄一下http://blog.csdn.net/tde007/article/details/50212001
额。。我是黏贴过去的。刚才少粘了个}
我写错了
确实配置了
location /showdoc/ {
if (!-e $request_filename) {
rewrite ^/index.php/(.*)$ /index.php?s=$1 last;
rewrite ^/(.*)$ /index.php?s=$1 last;
break;
}
这配置还是不对啊。你把文章的代码直接复制过去
应用放到了nginx 的html目录下 结构是
/usr/local/nginx/html/showdoc/Applicaiton这些了
nginx.conf
location / {
if (!-e $request_filename) {
rewrite ^/index.php/(.*)$ /index.php?s=$1 last;
rewrite ^/(.*)$ /index.php?s=$1 last;
break;
}
}
二级目录的重定向代码是文章的第二段呀
http://192.168.1.110/showdoc/ 可以看到
http://192.168.1.110/showdoc/index.php/home/user/login 404
大神,我部署完,只有首页可以显示,其他都是404