我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

nextcloud云盘系统,作为目前呼声最高的个人云盘开源软件,苏南大叔有安装了一个。确实效果非常不错,推荐大家下载安装nextcloud。安装完成之后,在地址栏中,index.php之类的字样,满天满地的都是。对于有洁癖的人来说,这是完全无法接受的事情。

苏南大叔:nginx 环境,nextcloud 如何去除 index.php 美化 url ? - url中的index
nginx 环境,nextcloud 如何去除 index.php 美化 url ?(图5-1)

那么,nextcloud如何美化url?如何去除url中的index.php字样?这个话题是苏南大叔在本篇文章中,要具体探讨的问题。

前提说明

在大家阅读本文的正文之前,苏南大叔先说明一下,关于nextcloud去除index.php的事情,您需要知道的事情。那就是:

  • nextcloud官方虽然有描述这件事情,但是官方提供的做法是针对apache的,并没有针对nginx的相关描述。网络上流传的针对nginx的描述,也是完全失效的。
  • nextcloud链接美化这事,远非想象中的那么简单。并不是像传统程序中,改个设置,然后加个.htaccess或者换个nginx.conf这么简单的事情。
  • 根据苏南大叔的观察,如果想要完全彻底的去除index.php字样。对于nextcloud系统来说,似乎是有些天方夜谭的事情。所以,对于这件事情有着完美期待的童鞋,可以放弃了。
  • 可以查看nextcloud 13.0.5的代码,代码里面写死的关于index.php的字样,随处可见。所以,这件事情远非想象中的那么简单。那么我们就期待nextcloud的后续更新,会彻底解决这个问题吧。

苏南大叔在本文中,描述的是:在nginx环境下,nextcloud链接美化的问题。本文的操作并不完美!修改了nextcloud的源码!以下的几步,是苏南大叔总结的,nginx版本的nextcloud美化url,去除index.php的步骤。

路由文件

/lib/private/URLGenerator.php文件,getAbsoluteURL函数,在合适的位置,增加如下语句:

$url=str_replace("/index.php/","/",$url);
seosn.com:这里是【评论】可见内容

本条目修改,可以保证系统函数输出的url里面,都没有index.php字样。

nginx配置

nextcloudnginx配置,其实非常的复杂。不过这里就仅仅展示和本文所讨论问题有关的条目。

  • 本条目是把一切请求都转向到index.php的。这个比较好理解,各大php框架的标配。
location / {
    rewrite ^ /index.php$request_uri;
}
  • 本条目是配合下面的js文件修改的,主要是修复分享功能链接中的index.php字样。
rewrite ^/index.php/s/(.*) /s/$1  permanent;

苏南大叔:nginx 环境,nextcloud 如何去除 index.php 美化 url ? - share_url
nginx 环境,nextcloud 如何去除 index.php 美化 url ?(图5-3)

分享功能的js文件

因为网盘的一个重大功能就是分享,那么分享功能的url链接中,也出现了index.php字样,经过苏南大叔的查看,除了上述nginx必须修改外,还需要修改一些js代码。因为代码里面,强制添加了index.php字样。

core/js/js.js文件,generateUrl函数:

seosn.com:这里是【评论】可见内容

苏南大叔:nginx 环境,nextcloud 如何去除 index.php 美化 url ? - nextcloud_js
nginx 环境,nextcloud 如何去除 index.php 美化 url ?(图5-4)

apache也许适用的配置方式

如果您的容器是apache,网络上流传的修改方式是这样的。(苏南大叔是对其效果表示怀疑的)因为苏南大叔的服务器容器是nginx,所以本条目并不适用。在翻阅了谷歌百度还有官方文档后,苏南大叔就彻底放弃了。自己动手,丰衣足食。

第一步,修改配置文件:config/config.php

'overwrite.cli.url' => '<http://yourdomain.com>',
'htaccess.RewriteBase'  =>  '/',

注意修改<http://yourdomain.com>字样为你自己的域名。(包括httphttps)。

苏南大叔:nginx 环境,nextcloud 如何去除 index.php 美化 url ? - nextcloud_config
nginx 环境,nextcloud 如何去除 index.php 美化 url ?(图5-5)

第二步,修改完配置文件后,还需要执行bash命令行。请在当前项目的根目录下面执行下面的命令行。

sudo -u www php occ maintenance:update:htaccess

注意:

  • -u后面的www是你的用户名,请注意修改。
  • occ是个服务器端的cli命令,其实是个php文件。
  • maintenance:update:htaccess是个参数,代表了命令行具体要做的事情。

不过,上述操作完成了之后,就是在根目录下面生成了一个.htaccess文件,所以,然并卵。nginx并不试用。

官方的描述见这里:

总结

通过上述一系列操作之后,nextcloud的url美化问题,得到了初步的解决。浏览器的地址栏里面也不会出现index.php字样了,分享的文件链接中,也不会出现index.php字样了。

但是本文的操作,遗留着一些问题:

  • 一些后台设置链接还是存在index.php字样
  • 升级nextcloud版本后,上述操作可能还是要继续重新修改。

更多nextclound的更多秘密,请点击苏南大叔的经验分享文章吧。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   nginx    nextcloud