清理网址而不清除页面变量

时间:2014-03-17 14:57:01

标签: javascript php

我有一个我试图使用的网站:

<script type="text/javascript">
    $(window).bind("load", function() {
    var url = window.location.href;
        if ( url.split('?').length >= 2 ) {
            window.location = url.split("?")[0];
        }
    });           
</script>

清理网址(website.com?id=12313)。但是在网站上我也有一个PHP脚本来读取这个id。甚至可以使用上面的脚本,并且仍然确保PHP Get变量在清除URL之前读取它。

2 个答案:

答案 0 :(得分:1)

php会在javascript之前运行很长时间,因此php无法读取它。但是,当您使用window.location更改URL时,您正在重新加载页面并再次访问php,因为您将其删除,因此无法找到该ID。

处理此问题的正确方法是通过服务器端网址重写。使用apache,通常通过.htaccess完成,而使用IIS7,则使用web.config

完成

通常你不想完全删除id,只是让它更干净。

http://foo.com/12313

如果你完全删除了id,那么书签将不起作用(并且获取来自php的id变得非常困难)

另一种方法是使用history api更改URL而不会导致页面刷新。

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

// this is not supported in older browsers
history.pushState({}, "removed the id", "/");

答案 1 :(得分:0)

使用.htaccess可能是一种方法

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?id=$1 [QSA,L] #rewrites all urls