我的ubuntu计算机上有一个测试网站,网址是:mysite.test。我有营销页面:http://mysite.test/hello.php,http://mysite.test/goodbye.php等
我还有通配符子域:http://user1.mysite.test/page1.php,http://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
我错过了什么?谢谢。
答案 0 :(得分:0)
我不确定我能为您提供有用的解决方案,但我有类似的代码可以使用:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.|/]+)$ $1.php [NC,L]
这设置如果它不是文件,并且它不包含.
(例如图像reference.jpg
,那么它会在文件名后附加.php
这对我来说很有效。