如何使用Apache隐藏我站点的URL中的文件扩展名?

时间:2017-09-02 21:31:19

标签: apache apache2

在有人说这是重复之前 - 我尝试了所有其他类似的问题而没有任何成功的结果。

我使用apache。

我正在尝试隐藏网址中的文件扩展名。例如,index.php将在URL中显示为索引。

所以我做了什么:

1)我创建了一个.htaccess文件,将其粘贴到其中:

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [NC]

RewriteCond %{REQUEST_URI} ^/(.+?)/$
RewriteCond %{DOCUMENT_ROOT}/%1\.html -f
RewriteRule ^ /%1.html [L]

RewriteCond %{REQUEST_URI} ^/(.+?)/$
RewriteCond %{DOCUMENT_ROOT}/%1\.php -f
RewriteRule ^ /%1.php [L]

2)上传.htacccesswww/html文件夹

3)重启apache

4)跑sudo a2enmod rewrite

5)再次重启apache

6)去/etc/apache2/sites-enabled/000-default.conf并将其粘贴到<VirtualHost *:80>标签中:

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

7)重启apache

并且...文件扩展名仍显示在我的网站上。这是我第一次玩.htaccess,所以有人可以解释一下我做错了什么以及我应该采取的正确步骤吗?

1 个答案:

答案 0 :(得分:0)

最好的办法是分解规则并一次应用一个规则。 删除.htaccess中的所有内容并添加以下内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

现在查看.php扩展名的文件是否正确解析。 然后添加.html规则。改变扩展名完全相同。