放置不带文件扩展名(.php)的链接

放置不带文件扩展名(.php)的链接,php,apache,Php,Apache,是否可以配置Apache以不显示文件扩展名 例如:假设我有domain.com/page.php,但希望将domain.com/page作为url 有什么想法吗?这叫做URL重写。最近我不得不第一次使用它,我曾经学习过它,希望你也会觉得它很棒:你想要一个名为URL重写的web服务器功能-每个web服务器应用程序(apache、IIS、nginx)都支持这一功能。顾名思义,它接受请求的URL并将其重写为您定义的特定格式 www上有许多可用的指南,即使您使用的是共享托管解决方案,您仍然可以添加/修改

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

例如:假设我有
domain.com/page.php
,但希望将
domain.com/page
作为url


有什么想法吗?

这叫做URL重写。最近我不得不第一次使用它,我曾经学习过它,希望你也会觉得它很棒:

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


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

将这是您的.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" 

还有
多视图
作为vhost或.htaccess配置选项。看

从该页:

多视图的效果如下:如果服务器接收到对/some/dir/foo的请求,如果/some/dir启用了多视图,并且/some/dir/foo不存在,则服务器读取目录以查找名为foo.*的文件,并有效地伪造一个类型映射来命名所有这些文件,为他们分配相同的媒体类型和内容编码,如果客户按姓名要求其中一个,则会有相同的媒体类型和内容编码。然后选择最符合客户需求的产品


这是你的.htaccess文件

重新编写引擎打开

RewriteRule^page?$page.php
多视图可能非常烦人,如果文件名和重写模式的选择重叠,就会妨碍正常的mod_重写规则。非常正确。小心使用。我在vhost中添加了多视图,持续了2天。我无法理解为什么我的clean get请求url不起作用。。。。感谢@thegingerdog@DavidGoodwin的评论,这个答案确实帮助解决了重写规则和启用的多视图选项之间的一个特别棘手且难以跟踪的冲突。