我知道它正在尝试加载 .html 版本,至少我很确定。我还认为它是 .htaccess 文件中的内容。我已经尝试了一些不同的东西来搜索谷歌并提出不足。基本上我希望它能够工作,这样如果输入的名称没有 .html 文件,它将转到 php 文件。
这可能吗?
尝试这个:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -s
RewriteRule ^.*$ %{REQUEST_URI}.php [L,QSA]
上述规则说,如果请求的文件大小为 0,或者不作为文件、符号链接或目录存在并且.php
存在具有扩展名的同名文件,则重写该.php
文件。
这有效地重写site.com/foo
了site.com/foo.php
哪里foo
可以是任何东西。
我不太清楚你想要什么。如果要将不存在的.html
文件映射到.php
扩展名,请尝试以下操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ $1.php [L,QSA]
这只是说如果请求的文件不存在并且以 结尾.html
,然后获取文件名(减去.html
)并尝试重写.php
扩展名。
在 htaccess
RewriteEngine on
RewriteRule ^eat$ eat.php [L]
将此添加到 apache 配置中(在httpd.conf
、VirtualHost
config 或 in 中.htaccess
):
Options +MultiViews
为此使用重写是一种过大的杀伤力,什么时候content-negotiation
可以完成这项工作。