2017-08-24 78 views
0

我正在使用.htaccess文件隐藏URL中的.php扩展名。虽然它工作正常,但我现在还必须在页面上显示的所有链接中隐藏.php文件扩展名。如何从浏览器状态栏隐藏.php扩展名

例如,当我将鼠标悬停在链接上时,其URL显示状态栏并包含.php扩展名。我怎样才能从链接URL中删除.php,或者完全隐藏浏览器状态栏中的URL?

我用下面的代码在我的.htaccess文件:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## don't touch /forum URIs 
RewriteRule ^forums/ - [L,NC] 

## hide .php extension snippet 

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L] 

# To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*?)/?$ $1.php [L] 

# To remove www header 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [L,R=301] 

(最初由anubhava基于this answer代码)

在我的HTML文件看起来像menu1.php的联系, menu2.php等。当我点击这些链接时,浏览器URL栏中显示的URL看起来像domain.com/menu1,这很好。但在状态栏中,当我将鼠标悬停在这些链接上时,它仍显示menu1.php

如何在状态栏中隐藏.php后缀?我是否必须手动更改所有链接中的所有网址,或者有什么方法可以隐藏它们?

+0

不知道这一点,但只是删除.php gravi

+0

显示代码或任何您输出超链接。 – ficuscr

+0

是的,让我们看看代码 – delboy1978uk

回答

-1

随着的.htaccess URL重写这样的:

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

你* .PHP链接可以,如果它是一个目录进行访问。

所以这个环节example.com/page/ actualy打开example.com/page.php

,你不会看到.PHP在浏览器状态栏扩展

0

简短的回答:是的,你确实需要修改所有的链接删除.php从他们扩展。


你所引用的.htaccess文件包含了做不同的事情两(相关)部分:

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L] 

当用户的浏览器请求的URL与.php扩展该重写规则触发。该规则导致网络服务器以external redirect响应相同的URL,但删除了.php后缀。然后浏览器将重新尝试使用新的URL加载页面,并且还会在地址栏中显示新的URL。

# To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*?)/?$ $1.php [L] 

那么这第二次重写规则上的网址触发包括.php扩展,但如果扩展被追加到他们这将符合实际.php文件在你的网络服务器。然后该规则将.php扩展附加到URL上,并在您的网络服务器内重新发出请求—但it does so internally,而浏览器不知道更改。

因此,实际上,浏览器被告知显示URL 而没有.php扩展名,但是网络服务器仍然运行带有扩展名的PHP脚本。

但是,这一切只发生在后用户点击了链接。 .htaccess文件中的URL重写规则不会,也不可能神奇地编辑您的HTML代码来修复其中包含的URL。因此,要真正隐藏您使用PHP的事实,您需要手动编辑您的HTML(包括PHP脚本自己输出的任何HTML代码),以从URL中删除.php文件扩展名。 (作为一个副作用,这样做也会使上面引用的第一个RewriteRule变得没有必要,但是,您仍然可能想要保留它,以便仍旧包含网址中.php扩展名的旧链接仍然可以获得自动重定向。)