删除.htaccess中的.php扩展名无效

时间:2016-09-14 20:47:40

标签: php apache .htaccess ubuntu

我的ubuntu计算机上有一个测试网站,网址是:mysite.test。我有营销页面:http://mysite.test/hello.phphttp://mysite.test/goodbye.php

我还有通配符子域:http://user1.mysite.test/page1.phphttp://user2.mysite.test/page.1php等。

我想在不添加“.php”扩展名(营销网站和子域名)的情况下访问所有页面。我修改了我的.htaccess文件,但它无法正常工作,我无法弄清楚原因。 mod_rewrite已启用并正常工作(下面的“删除www”规则有效)。

:string

删除第一条规则(“删除www”)并不能让它开始工作。

当我转到http://mysite.test/hello时,我收到404 Not Found错误。转到http://mysite.test/hello.php加载就好了。

当我转到http://user1.mysite.test/page1时,我收到404 Not Found错误。转到http://user1.mysite.test/page1.php加载就好了。

我的虚拟主机文件如下所示:

#/var/www/mysite.test/public_html/.htaccess
RewriteEngine On
#Remove www - this works
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC]

#Not need .php extension - this does not work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php

我错过了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定我能为您提供有用的解决方案,但我有类似的代码可以使用:

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

这设置如果它不是文件,并且它不包含.(例如图像reference.jpg,那么它会在文件名后附加.php

这对我来说很有效。