我尝试通过在XAMPP本地主机服务器上使用.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]
我尝试了更多的选择来实现我的目标,但什么都没有改变。我做错什么了吗?
检查httpd.conf文件(apache的配置文件)中是否有AllowOverride All
。如果你在Windows上使用XAMPP,那么httpd.conf文件应该位于如下目录:C: ' xampp ' apache ' conf ' httpd . conf
在Directory标记中添加AllowOverride All
行。例如:
<Directory C:'xampp'htdocs>
AllowOverride All
Allow from all
</Directory>
注:通过允许覆盖,您告诉服务器允许.htaccess
文件覆盖服务器的默认配置。
编辑:对不起,我之前提到AllowOverride 'On'。应该是AllowOverride 'All'。这在我的ubuntu中工作得很好。我将尽快找出如何使它在windows(xampp)中工作。
我在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]