29

是否可以配置 Apache 以不显示文件扩展名?

例如:假设我有domain.com/page.php但想要domain.com/page作为 url。

有任何想法吗?

4

5 回答 5

54

把这是你的 .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" 
于 2013-08-02T13:49:59.667 回答
15

还有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.* 的文件,并有效地伪造了一个类型映射,该类型映射为所有这些文件命名,为它们分配相同的媒体类型和内容编码,如果客户端按名称要求其中之一。然后它选择最符合客户要求的匹配项。

于 2015-01-08T20:45:56.970 回答
8

这称为 URL 重写。我最近第一次使用它,我用这个教程来学习它,希望你也会觉得它很棒:

于 2013-08-02T13:41:56.047 回答
4

把这是你的 .htaccess 文件

RewriteEngine On
RewriteRule ^page?$ page.php

<a href="page">page</a>

于 2018-02-02T12:01:01.510 回答
3

您需要一个称为 URL 重写的 Web 服务器功能 - 每个 Web 服务器应用程序(apache、IIS、nginx)都支持此功能。顾名思义,它接受请求的 URL 并将其重写为您定义的特定格式。

www 上提供了许多指南,即使您使用的是共享主机解决方案,您仍然可以添加/修改 .htaccess 文件来执行此操作。

于 2013-08-02T13:49:27.400 回答