我在 Webfaction 网络空间上安装了 Nextcloud,并想删除index.php
URL 中的“ ”。我按照此处的说明,但后来意识到它说的是:
此外,这些说明仅在使用 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