0

这是我的问题:

我想隐藏url中的参数,所以任何页面只能显示www.website.com

我为 index.php 页面添加了一个框架集,

当用户单击此页面中的任何链接时,它是完美的,

但是如果用户通过右键单击打开链接 - >在新选项卡或窗口中打开,

将显示带有参数的整个 URL,

有什么想法可以防止用户通过在新选项卡中打开在框架集中打开页面?

4

2 回答 2

1

通常,要完成此操作,您需要设置服务器以这种方式操作。它通常被称为 URI 或“Pretty URI”。这也是在 RESTful 意义上设计应用程序的关键组件。

如果您有权访问服务器配置并且正在运行 LAMP 堆栈,则可以使用 .htaccess 文件完成此操作。但是您仍然需要您的服务器端脚本来处理其余的请求。

这是一个示例 .htaccess 文件,它将删除扩展名和查询:

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

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]

但是,如果您肯定想要精确的 URI http://phpmaster.com/rest-can-you-do-more-than-spell-it-1/ ,则无论如何都应该参考 RESTful

还有另一个关于 .htaccess 和“Pretty URLs”的教程 http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls/

于 2013-01-29T04:37:44.753 回答
0

好吧,像这样隐藏 URL 通常不是一个好主意,但你可以试试这个:

<a href="somepage.php" onclick="location.href=this.href;return false;">Link</a>

您还可以使用一些简单的 JavaScript,这样您就不必手动将事件处理程序添加到每个链接:

document.body.addEventListener("click",function(e) {
    var t = e.srcElement || e.target;
    if( !t.tagName) t = t.parentNode;
    if( t.tagName.toLowerCase() == "a") {
        location.href = t.href;
        return false;
    }
},false);
于 2013-01-29T04:18:57.060 回答