为什么 apache2 .htaccess rewrite 不能与 /index/ 一起使用

为什么 apache2 .htaccess rewrite 不能与 /index/ 一起使用

我浏览过许多问题/答案,但找不到解决这个问题的方法。我的重写正在发挥作用(大部分)。

以下工作完全没有问题:

  • url.com/almostAnything
  • url.com/almostAnything/else/can/be/sent/to/etc/etc/
  • url.com/index.
  • url.com/index./

然而这并不起作用。

  • url.com/index
  • url.com/index/

使用 /index 或 /index/ 我收到 404 错误。

当前.htaccess文件如下:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

我也尝试过:

RewriteRule ^ index.php [L]

似乎我在 .htaccess 文件之前遇到了一些问题,我不确定该去哪里找。抱歉,如果这是一个看似基本的问题,这似乎应该是一个非常简单的问题,我只是似乎找不到它。

可能相关的apache2.conf:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

#<Directory /srv/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>

此外,该网站托管在 /var/www/html/subfolder 中,并且有一个虚拟主机直接指向子文件夹,因此可以通过 url.com 访问

答案1

我终于找到了自己的解决方案。万一其他人来这里寻找……

我必须编辑 virtualhost.conf 文件中的虚拟主机设置。

选项索引 FollowSymLinks MultiViews

删除最后的“MultiViews”并且它起作用了。

更改自:

 <Directory /var/www/html/elim/public/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
 </Directory>

到:

<Directory /var/www/html/elim/public/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>

相关内容