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

Sum*_*pta 52 php friendly-url url-rewriting

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

隐藏了像(PHP/JSP)这样的文件扩展名

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

作为第二个示例,您可以查看StackOverflow网站本身.

有人可以帮助我完成这项工作吗?谢谢!

小智 76

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

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

  • +1这是要走的路,但是如果OP想要了解这些线路,你能否解释一下这里发生的事情 (36认同)

Shi*_*ngh 13

首先,验证是否已安装mod_rewrite模块.然后,要小心了解它是如何工作的,很多人都会倒退.

您不隐藏网址或扩展程序.例如,你所做的就是创建一个指向旧网址的新网址

放在您网站上的网址为yoursite.com/play?m=asdf

还是更好

yoursite.com/asdf

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

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

差不多完成了 - 现在你只需要在PHP脚本中写一些东西来解析新的URL.您希望这样做,以便OLD也可以工作 - 您所做的是维护一个系统,通过该系统变量始终完全相同创建一个数据库表,将"SEO友好URL"与产品ID相关联.一个例子可能是

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

这有什么好处?搜索引擎会将关键词"Some Cool Video"编入索引.ASDF?谁会去搜索?

我不能给你如何编程的具体细节,但采取查询字符串,剥离结束

yoursite.com/Some-Cool-Video 
Run Code Online (Sandbox Code Playgroud)

变成"asdf"

然后将m变量设置为this

米= ASDF

所以这两个URL仍然会转到同一个产品

yoursite.com/play.php?m=asdf 
yoursite.com/Some-Cool-Video 
Run Code Online (Sandbox Code Playgroud)

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


Ima*_*azi 5

您有不同的选择。其中之一是创建一个名为“ profile”的文件夹,并将“ profile.php”重命名为“ default.php”,然后将其放入“ profile”文件夹。您可以通过以下方式向该页面下达订单:

旧页面:http//something.com/profile.php?id = a&abc = 1

新页面:http//something.com/profile/?id = a&abc = 1

如果您不满意,请对复杂的方法发表评论。