如何从网站地址中删除文件扩展名?
我正在设计一个网站。我希望我的网站地址如下图所示:
我不希望我的网站看起来像 .我希望在有人打开我的网站时删除地址栏中的扩展名。换句话说,我希望我的网站是这样的:http://something.example/profile.php
.php
http://something.example/profile
作为第二个示例,您可以查看 Stack Overflow 网站地址本身。
我该如何完成此操作?
我正在设计一个网站。我希望我的网站地址如下图所示:
我不希望我的网站看起来像 .我希望在有人打开我的网站时删除地址栏中的扩展名。换句话说,我希望我的网站是这样的:http://something.example/profile.php
.php
http://something.example/profile
作为第二个示例,您可以查看 Stack Overflow 网站地址本身。
我该如何完成此操作?
只需将 .htaccess 文件添加到站点的根文件夹(例如 ,)即可,其中包含以下内容:/home/domains/domain.example/htdocs/
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
有关其工作原理的更多信息,请参阅以下页面:mod_rewrite指南(简介,使用它),参考文档
首先,验证是否已安装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也可以做很多其他重要的事情,谷歌它,并在你的服务器上激活它(它可能已经安装好了)。