使用 Apache+fastcgi 从 Nextcloud 网址中删除 index.php

使用 Apache+fastcgi 从 Nextcloud 网址中删除 index.php

我在 Webfaction 网络空间上安装了 Nextcloud,并想删除index.phpURL 中的“ ”。我按照此处的说明,但后来意识到它说的是:

此外,这些说明仅在使用 Apache 和 PHP 的 mod_php Apache 模块时才有效。不支持其他模块,如 php-fpm 或 mod_fastcgi。

看来我的托管商正在使用带有 fastcgi 的 Apache。但是,干净的 URL 确实有效 - 而不是https://example.com/index.php/apps/files/,我可以去https://example.com/apps/files/并获取正确的页面。但是当我浏览时,Nextcloud 会继续插入“ index.php”。准确地说,会发出指向长 URL 的 303 重定向。

还,此论坛条目表明它确实与 php7 和 fastcgi 一起工作。

我怎样才能让它停止插入?如果有必要,我可以编辑代码,但我使用 PHP 的经验是从mysql_*API 时代开始的,在课程之前,所以我很难找到解决方法 :-) - 也许这里有人已经知道解决这个问题的快速方法。

答案1

在 Nextcloud 中添加以下几行config/config.php

  'htaccess.RewriteBase' => '/',
  'htaccess.IgnoreFrontController' => true,

然后occ maintenance:update:htaccess从控制台运行来更新.htaccess文件。

您应该看到这些行添加到末尾.htaccess

<IfModule mod_rewrite.c>
  Options -MultiViews
  RewriteRule ^core/js/oc.js$ index.php [PT,E=PATH_INFO:$1]
  RewriteRule ^core/preview.png$ index.php [PT,E=PATH_INFO:$1]
  RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4|mp3|ogg|wav)$
  RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico$
  RewriteCond %{REQUEST_FILENAME} !core/img/manifest.json$
  RewriteCond %{REQUEST_FILENAME} !/remote.php
  RewriteCond %{REQUEST_FILENAME} !/public.php
  RewriteCond %{REQUEST_FILENAME} !/cron.php
  RewriteCond %{REQUEST_FILENAME} !/core/ajax/update.php
  RewriteCond %{REQUEST_FILENAME} !/status.php
  RewriteCond %{REQUEST_FILENAME} !/ocs/v1.php
  RewriteCond %{REQUEST_FILENAME} !/ocs/v2.php
  RewriteCond %{REQUEST_FILENAME} !/robots.txt
  RewriteCond %{REQUEST_FILENAME} !/updater/
  RewriteCond %{REQUEST_FILENAME} !/ocs-provider/
  RewriteCond %{REQUEST_FILENAME} !/ocm-provider/
  RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
  RewriteCond %{REQUEST_FILENAME} !/richdocumentscode(_arm64)?/proxy.php$
  RewriteRule . index.php [PT,E=PATH_INFO:$1]
  RewriteBase /
  <IfModule mod_env.c>
    SetEnv front_controller_active true
    <IfModule mod_dir.c>
      DirectorySlash off
    </IfModule>
  </IfModule>
</IfModule>

mod_rewrite并且mod_env必须在您的服务器上启用此功能才能正常工作。您可能需要重新启动服务器才能使更改生效。

已在常规 Web 安装上使用 Nextcloud 20.0.4(稳定版本)成功测试了此功能。

答案2

如果 occ Maintenance:update:htaccess 命令在控制台中输出以下内容:-bash: occ: command not found https://i.stack.imgur.com/gYSJP.png

相关内容