不带文件扩展名的apache

不带文件扩展名的apache,apache,ubuntu,Apache,Ubuntu,我在我的Ubuntu机器上安装了一个Apache服务器。我最近更新了我的机器,重新安装了Apache(尽管我备份了配置文件)。在我更新之前,我能够访问example.com/folder/example上的文件/var/www/folder/example.html,但现在在我的服务器中键入指向文件/var/www/folder/example/index.html的链接,该文件不存在,因此我得到一个404错误。如果我输入了可以工作的直接路径(example.com/folder/example

我在我的Ubuntu机器上安装了一个Apache服务器。我最近更新了我的机器,重新安装了Apache(尽管我备份了配置文件)。在我更新之前,我能够访问
example.com/folder/example
上的文件
/var/www/folder/example.html
,但现在在我的服务器中键入指向文件
/var/www/folder/example/index.html
的链接,该文件不存在,因此我得到一个404错误。如果我输入了可以工作的直接路径(
example.com/folder/example.html
),但最后没有
.html
。有没有办法重新配置Apache,使其像以前一样工作

如果您在获得“example.html”文件的同一目录中有一个文件夹“example”,您可能会遇到问题。 您应该删除/重命名文件夹,或者可以在apache2.conf或.htaccess文件中放置类似的内容

RewriteEngine On
RewriteCond %{REQUEST_URI} ! \.html$
RewriteRule ^(.*)$ $1.html
编辑: 你需要按照@julp在评论中的建议去做。使用多视图将允许具有不同的文件扩展名,并且只调用文件basename。Ba意识到在文件夹中使用唯一的基名称是明智的。 此外,必须为每个文件夹设置“多视图”设置。 请进一步了解:


.htaccess文件应如下所示:

Options +FollowSymLinks -MultiViews
#
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php
RewriteRule ^ %1 [R=302,L]
#
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
如果您运行的是Apache2或类似的引擎,请确保允许在其conf文件中进行重写


让我知道这是否对您有效。

您是否记得备份隐藏的
.htaccess
文件?我没有使用任何
htaccess
文件。。我刚刚配置了
apache2.conf
文件中的所有内容现在都被禁用了?尝试在
Options
行中添加
MultiViews
(确保第一个mod_协商已编译或加载)。您所说的“从头开始重新安装apache”是什么意思?你重新编译了吗?您是否
apt-get--purge&&apt-get安装apache2
it?我没有文件夹
example
。我只是说Apache可能就是在这里查找文件的。不过,重写规则不会自动将
.html
添加到每个URL吗?我还想访问其他文件类型,但是默认情况下(没有扩展名),它应该访问
.php
.html
文件(没有一个文件具有相同的名称)