如何解决RewriteCond %{REQUEST_FILENAME} !-f 不起作用
我的配置很简单:
我处理对 index.php 文件所在的两个不同应用程序的调用:
/var/www/html/mars/public/index.php
和
/var/www/html/neptune/public/index.php
这两个应用程序通过 https://mars.ddns.net
和 https://neptune.ddns.net
调用。
在 /var/www/html 文件夹中,我创建了一个 .htaccess 文件来管理这两个调用:
# Disable directory browsing
Options All -Indexes
<IfModule mod_rewrite.c>.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond "%{HTTP_HOST}" "mars\.ddns\.net"
RewriteRule ^(.*)$ mars/public/index.php?/$1 [L].
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond "%{HTTP_HOST}" "neptune\.ddns\.net"
RewriteRule ^(.*)$ neptune/public/index.php?/$1 [L].
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
我没有配置任何虚拟主机并且在 Apache 配置中
/etc/apache2/sites-enabled/000-default.conf
和
/etc/apache2/sites-enabled/000-default-le-ssl.conf(我安装了 Let's Encrypt)
我只插入了以下代码:
<Directory "/var/www/html">.
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
一切正常,调用被定向到正确的应用程序,从而从 url 中消除了“/appfolder/public/index.php”。 htaccess 文件无法处理对现有文件的调用。 代码
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
似乎没有被执行。 我也试过:
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]
并与:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
但调用总是指向 var/www/html/appfolder/public/index.php 文件而不是现有文件
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。