【问题标题】:Hiding File Name From URL从 URL 隐藏文件名
【发布时间】:2014-10-23 20:37:38
【问题描述】:

您能否告诉我如何在 PHP 或 HTML 中隐藏 URL 中的页面名称?例如,如果我有类似的东西:

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

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

【问题讨论】:

  • 请不要这样做。您无法在内容中创建深层链接,从而提供了糟糕的用户体验。
  • 为什么要这样做?也许你可以用另一种方式完成你想要的。

标签: javascript php jquery html url-rewriting


【解决方案1】:

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

在这种情况下,您唯一的希望是使用<frameset>,以便地址栏保持在您的顶级页面,而各个页面都隐藏在<frame>s 中。甚至那是没有意义的。 非常简单要获得像这样“隐藏”在框架内的任何页面的地址。

【讨论】:

    【解决方案2】:

    您可以使用 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 页面的内容放入“home.html”或其他内容中。

    对于 iframe 之外的超链接,您只需这样做

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

    可能不是这里最好的方法,但它会“工作”.. 一个缺点是如果有人直接访问“mydomain.com/about.html”,它会将他们带到带有 /about.html 的关于页面在地址栏中。这种方法还使查看者难以分享您的页面。

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2017-11-01
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      相关资源
      最近更新 更多