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

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

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

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

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

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

只需将.htaccess文件添加到您站点的根文件夹(例如/home/domains/domain.com/htdocs/),并带有以下内容:

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

首先,validation是否安装了mod_rewrite模块。 然后,要小心了解它是如何工作的,许多人把它倒退了。

您不会隐藏url或扩展程序。 例如,您所做的是创build一个指向旧版url的新url

放在您的网站上的URL将是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] 

几乎完成 – 现在你只需要写一些东西到你的PHP脚本来parsing出新的URL。 您希望这样做,以便OLD的工作 – 您所做的是维护一个系统,使variables始终完全相同, 或者创build一个数据库表,将“SEO友好的URL”与产品ID相关联。 一个例子可能是

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

这个好处呢? search引擎将索引关键字“一些酷video”。 ASDF? 谁来search呢?

我不能给你具体的如何编程,但采取查询string,剥离结束

 yoursite.com/Some-Cool-Video 

变成“asdf”

然后设置这个mvariables

米= ASDF

所以这两个URL将仍然是同一个产品

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

mod_rewrite也可以做很多其他重要的东西,谷歌为它,并得到它在您的服务器上激活(它可能已经安装)。

参考: http : //www.scriptscoop2.com/t/1a0c2b81484d/php-how-to-remove-file-extension-from-website-address.html

你有不同的select。 其中一个是创build一个名为“个人资料”的文件夹,并将您的“profile.php”重命名为“default.php”并将其放入“个人资料”文件夹。 您可以通过这种方式下单:

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

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

如果您不满意,请留下评论复杂的方法。

在创build一个目录并保持index.php的问题是

  1. 与菜单的链接将停止运行
  2. 会有太多的目录。 例如,对于每个问题,在这里将有一个单独的目录在stackoverflow

解决scheme是1. MOD REWRITE(如上build议)2.使用PHP代码dynamic地包含索引文件中的其他文件。 在这里阅读更多的信息http://inobscuro.com/tutorials/read/16/

这是一个简单的PHP方式,我使用。
如果以.php扩展名请求页面,则不带.php扩展名的新请求被创build。 .php扩展名不再显示在浏览器的地址栏中。

我想出了这个解决scheme,因为没有任何.htaccess的build议为我工作,而且在PHP中实现这个更快,而不是试图找出.htaccess为什么不能在我的服务器上工作。

把这个放在每个PHP文件的开头(最好在别的之前):

 include_once('scripts.php'); strip_php_extension(); 

然后把这些函数放在文件'scripts.php'中:

 //==== Strip .php extension from requested URI function strip_php_extension() { $uri = $_SERVER['REQUEST_URI']; $ext = substr(strrchr($uri, '.'), 1); if ($ext == 'php') { $url = substr($uri, 0, strrpos($uri, '.')); redirect($url); } } //==== Redirect. Try PHP header redirect, then Java, then http redirect function redirect($url) { if (!headers_sent()) { /* If headers not yet sent => do php redirect */ header('Location: '.$url); exit; } else { /* If headers already sent => do javaScript redirect */ echo '<script type="text/javascript">'; echo 'window.location.href="'.$url.'";'; echo '</script>'; /* If javaScript is disabled => do html redirect */ echo '<noscript>'; echo '<meta http-equiv="refresh" content="0; url='.$url.'" />'; echo '</noscript>'; exit; } } 

显然你仍然需要设置Apache来redirect任何没有扩展名的请求到扩展名的文件。 上面的解决scheme简单地检查请求的URI是否有扩展名,如果它请求了没有扩展名的URI。 然后,Apache将redirect到具有扩展名的文件,但浏览器的地址字段中只显示了所请求的URI(没有扩展名)。 好处是你代码中的所有“href”链接仍然可以有完整的文件名,即包含.php扩展名。

其实,操纵这个最简单的方法是

  1. 在服务器上打开一个新文件夹,例如“数据”
  2. 把index.php(或index.html)放在里面

然后URL http://www.yoursite.com/data将读取index.php文件。; 如果你想进一步,打开一个子文件夹(例如“列表”),在另一个index.php文件夹中,你可以让www.yoursite.com/data/list运行该PHP文件。

这样你就可以完全控制这个,对SEO很有用。

与伊戈尔相同,但应该没有第2行:

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 

通过.htaccess删除文件扩展名

原始url: http : //ravinderrathore.herobo.com/contact.php

htaccess规则从URL中删除.php,.html等文件扩展名。

 RewriteRule ^(.*)$ $1.php After Rewriting: http://ravinderrathore.herobo.com/contact RewriteEngine on RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ RewriteRule ^index(.*)?$ index.php$1 [L,QSA] RewriteRule ^login_success(/)?$ login_success.php [L,QSA] RewriteRule ^contact(/)?$ contact.php [L,QSA] 

跟第一个答案差不多,但还有一些优势。

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

如果你的站点中有其他的文件扩展名,就加起来

托尼,你的脚本没问题,但如果你有100个文件? 需要在所有这些添加此代码:

include_once( 'scripts.php');
strip_php_extension();

我想你在每个php文件中都包含了一个菜单(可能你的菜单显示在你的所有网页中),所以你可以在菜单文件中添加这两行代码。 这工作对我来说:D