【发布时间】:2013-08-03 19:23:14
【问题描述】:
是否可以配置 Apache 以不显示文件扩展名?
例如:假设我有domain.com/page.php,但希望将domain.com/page 作为网址。
有什么想法吗?
【问题讨论】:
是否可以配置 Apache 以不显示文件扩展名?
例如:假设我有domain.com/page.php,但希望将domain.com/page 作为网址。
有什么想法吗?
【问题讨论】:
这是你的 .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 重写。我最近第一次使用它,我用this tutorial来学习它,希望你也觉得它很棒:
【讨论】:
这是你的 .htaccess 文件
RewriteEngine On
RewriteRule ^page?$ page.php
<a href="page">page</a>
【讨论】:
您需要一种称为 URL 重写的 Web 服务器功能 - 每个 Web 服务器应用程序(apache、IIS、nginx)都支持此功能。顾名思义,它接受请求的 URL 并将其重写为您定义的特定格式。
www 上提供了许多指南,即使您使用共享托管解决方案,您仍然可以添加/修改 .htaccess 文件来执行此操作。
【讨论】: