我有一个我试图使用的网站:
<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之前读取它。
答案 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