如何从网站地址中删除文件扩展名?

2022-08-30 09:16:36

我正在设计一个网站。我希望我的网站地址如下图所示:

File name extensions like (PHP/JSP) are hidden

我不希望我的网站看起来像 .我希望在有人打开我的网站时删除地址栏中的扩展名。换句话说,我希望我的网站是这样的:http://something.example/profile.php.phphttp://something.example/profile

作为第二个示例,您可以查看 Stack Overflow 网站地址本身。

我该如何完成此操作?


答案 1

只需将 .htaccess 文件添加到站点的根文件夹(例如 ,)即可,其中包含以下内容:/home/domains/domain.example/htdocs/

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

有关其工作原理的更多信息,请参阅以下页面:mod_rewrite指南(简介,使用它),参考文档


答案 2

首先,验证是否已安装mod_rewrite模块。然后,要小心理解它是如何工作的,很多人把它倒过来。

您不会隐藏网址或扩展程序。例如,您要做的是创建一个指向旧URL的新URL

要放在您网站上的URL将是yoursite.example/play?m=asdf

或者更好的是

yoursite.example/asdf

即使目录 asdf 不存在。然后,安装mod_rewrite,然后将其放入.htaccess中。基本上它说,如果请求的URL不是文件,也不是目录,请将其定向到我的脚本:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /play.php [L]

几乎完成了 - 现在你只需要在PHP脚本中写一些东西来解析出新的URL。您希望这样做,以便旧的也起作用 - 您所做的是维护一个系统,通过该系统,变量始终完全相同,或者创建一个将“SEO友好URL”与产品ID相关联的数据库表。例如

/Some-Cool-Video(等于产品 ID asdf)

这样做的好处是什么?搜索引擎会索引关键字“一些很酷的视频”。谁来搜索它?

我不能给你如何编程的细节,但拿查询字符串,去掉结尾

yoursite.example/Some-Cool-Video

变为“asdf”

然后将 m 变量设置为 。m=asdf

因此,两个URL仍将转到同一产品

yoursite.example/play.php?m=asdf
yoursite.example/Some-Cool-Video

mod_rewrite也可以做很多其他重要的事情,谷歌它,并在你的服务器上激活它(它可能已经安装好了)。


推荐