是否可以配置Apache以便不显示文件扩展名?
例如:假设我有domain.com/page.php
但想要domain.com/page
作为网址。
任何想法?
答案 0 :(得分:40)
这是你的.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"
答案 1 :(得分: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。*的文件,并有效地伪造一个命名所有这些文件的类型映射,为它们分配相同的媒体类型和内容编码,如果客户端通过名称请求其中一个文件。然后,它会根据客户的要求选择最佳匹配。
答案 2 :(得分:5)
这称为URL重写。我最近不得不第一次使用它,我使用this tutorial来学习它,希望你也会发现它很棒:
答案 3 :(得分:2)
您需要一个名为URL重写的Web服务器功能 - 每个Web服务器应用程序(apache,IIS,nginx)都支持此功能。顾名思义,它会获取请求的URL并将其重写为您定义的特定格式。
www上有许多指南,即使您使用的是共享托管解决方案,您仍然可以添加/修改.htaccess文件来执行此操作。
答案 4 :(得分:2)
这是你的.htaccess文件
RewriteEngine On
RewriteRule ^page?$ page.php

<a href="page">page</a>
&#13;
答案 5 :(得分:1)
这很简单。只需创建.htaccess文件,并将其放在root中,然后您可以覆盖自己的url。