.htaccess文件不适用(删除.php扩展名)

时间:2014-06-22 08:46:09

标签: php .htaccess

我尝试仅使用XAMPP localhost服务器上的.htaccess文件删除.php扩展名。我在其中加入了以下几行:

RewriteEngine On
RewriteOptions inherit
Options +FollowSymlinks
Options -Multiviews
## hide .php extension
## To externally redirect /dir/foo.php to /dir/foo
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

我已经尝试了更多选项来实现我的目标,但没有任何改变。我做错了吗?

2 个答案:

答案 0 :(得分:0)

检查 httpd.conf 文件(apache的配置文件)中是否有AllowOverride All。如果您在Windows上使用XAMPP,则httpd.conf文件应驻留在以下目录中: C:\ XAMPP \阿帕奇\ CONF \ httpd.conf中

在目录标记中添加AllowOverride All行。例如: <Directory C:\xampp\htdocs> AllowOverride All Allow from all </Directory>

P.S。通过允许覆盖,您可以告诉服务器允许.htaccess文件覆盖服务器的默认配置。

编辑:很抱歉我之前提到过AllowOverride&#39; On&#39;。它应该是AllowOverride&#39; All&#39;。这在我的ubuntu中工作正常。我将尽快找出如何使它在Windows(xampp)中运行。

答案 1 :(得分:0)

以下适用于apache2。希望它也适用于XAMPP。 这与您的代码几乎相同,但它检查所请求的文件名是否不存在,并且PHP文件确实存在

RewriteEngine On
RewriteOptions inherit
Options +FollowSymlinks
Options -Multiviews
## hide .php extension
## To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ %{REQUEST_FILENAME}\.php [NC,L]