是否可以配置 Apache 以不显示文件扩展名?
例如:假设我有domain.com/page.php
但想要domain.com/page
作为 url。
有任何想法吗?
把这是你的 .htaccess 文件
#turn on url rewriting
RewriteEngine on
#remove the need for .php extention
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
这允许您访问没有扩展名的 .php 文件,因此您的链接应为
href="/somepage"
这将指向
href="/somepage.php"
还有MultiViews
一个 vhost 或 .htaccess 配置选项。见http://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews
从该页面:
MultiViews 的效果如下:如果服务器收到对 /some/dir/foo 的请求,如果 /some/dir 启用了 MultiViews,并且 /some/dir/foo 不存在,则服务器读取目录查找名为 foo.* 的文件,并有效地伪造了一个类型映射,该类型映射为所有这些文件命名,为它们分配相同的媒体类型和内容编码,如果客户端按名称要求其中之一。然后它选择最符合客户要求的匹配项。
这称为 URL 重写。我最近第一次使用它,我用这个教程来学习它,希望你也会觉得它很棒:
把这是你的 .htaccess 文件
RewriteEngine On
RewriteRule ^page?$ page.php
<a href="page">page</a>
您需要一个称为 URL 重写的 Web 服务器功能 - 每个 Web 服务器应用程序(apache、IIS、nginx)都支持此功能。顾名思义,它接受请求的 URL 并将其重写为您定义的特定格式。
www 上提供了许多指南,即使您使用的是共享主机解决方案,您仍然可以添加/修改 .htaccess 文件来执行此操作。