从URL隐藏文件名

时间:2014-08-29 19:26:04

标签: javascript php jquery html5 url-rewriting

请告诉我如何在PHP或HTML中隐藏网页名称?例如,如果我有类似的东西:

www.mydomain.com/about.html
www.mydomain.com/project.html
www.mydomain.com/contact.php

仅显示为:

www.mydomain.com

我已经使用

看到了这个技巧

将以下内容添加到.htaccess文件中:

#######
#Allow PHP/HTML pages to load without the filename extension
######
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

但这只会删除扩展名。谢谢

2 个答案:

答案 0 :(得分:0)

不可能。您无法将浏览器在地址栏中显示的内容更改为该级别。这是一个主要的安全问题。你可以做一些简单的事情,比如隐藏文件扩展名或将查询参数更改为“路径”组件,但是你无法说服用户的浏览器从根本上骗他们。

在这种情况下,您唯一的希望是使用<frameset>,以便地址栏保留在您的顶级页面,并且各个页面都隐藏在<frame>内。即使这是毫无意义的。将任何页面的地址“隐藏”在这样的帧内是非常简单的。

答案 1 :(得分:0)

您可以使用iFrame。

<iframe src="about.html" name="nameOfFrame" frameborder="0" width="100%" height="100%"> This is the text that will be displayed for browsers not supporting iframes. </iframe>

这会将整个页面包装在iframe中,因此您可以在index.html页面上执行此操作,并获取index.html页面的内容并将其放入&#34; home.html&#34;什么的。

对于iframe之外的超链接,您只需执行

<a href="page.html" target="nameOfFrame">Hey guys!</a>

可能不是这里最好的方法,但它的工作&#34; ...一个缺点是如果有人直接进入&#34; mydomain.com/about.html"它会将它们带到地址栏中带有/about.html的about页面。此方法还使观看者难以共享您的页面。

另一种方法是使用AngularJs和UIRouter。我只使用了一点,所以我不能像使用内联框架那样抛出一些代码,但你可以在这里阅读更多相关信息:https://github.com/angular-ui/ui-router

希望这有帮助!