我尝试仅使用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]
我已经尝试了更多选项来实现我的目标,但没有任何改变。我做错了吗?
答案 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]