使用.htaccess修剪网址查询字符串
在我的网站上,我在访问页面表单内容时使用会话ID。通常不会显示url中的sessionid,因为它是通过jQuery .load访问的,因此URL不会更改。上面参考的页面需要被一些外部域直接访问。 我在表单页面的顶部使用了以下PHP来显示整个页面。使用.htaccess修剪网址查询字符串
<?php
$code = $_GET['sessionid'];
$referrer = $_SERVER['HTTP_REFERER'];
if(strcmp($code , 'XXXXX') !=0) {
if (preg_match("/alloweddomain.com/",$referrer)) {
header('Location: http://www.mydomain.com/desiredpage.php?sessionid=XXXXX');
} else {
header("Location: http://www.mydomain.com/otherpage.php");
}
}
?>
有没有办法用.htaccess删除会话ID?我试过以下,但得到500内部服务器错误。
RewriteEngine On
RewriteBase/
"lots of 301 redirects"
HTTP_REFERER variable RewriteCond %{HTTP_REFERER} !aloweddomain.com RewriteCond %{QUERY_STRING} !="sessionid=XXXXX" RewriteRule .* /desiredpage.php? [R=301,L]
***编辑* ** * 用这个,填写相应的信息
RewriteCond %{HTTP_REFERER} !**aloweddomain.com** [OR]
RewriteCond %{QUERY_STRING} !=sessionid=**XXXXX**
RewriteRule .* /**desiredpage**.php? [R=301,L]
只是得到FF的错误,它可以't complete redirect
你忘了换行
RewriteCond %{HTTP_REFERER} !aloweddomain.com [OR]
RewriteCond %{QUERY_STRING} !=sessionid=XXXXX
RewriteRule .* /desiredpage.php? [R=301,L]
这将重定向不从aloweddomain.com出来,或者没有QUERY_STRING所有的URL。我忘记了[OR]
如果还有[OR]
,那么这两个条件必须是真的。
如果desiredpage.php仅仅是表明你不能访问该网站页面,那么你可以把403如果您想从AJAX或自定义域称它为故宫,而不是重定向
RewriteRule .* - [F,L]
。
if (preg_match('/domain.com/', $_SERVER['HTTP_REFERER']) ||
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
// allowed
header('Location: http://www.mydomain.com/desiredpage.php');
} else {
// not allowed
header('Location: http://www.mydomain.com/otherpage.php');
}
代码desiredpage.php
if (!(preg_match('/domain.com/', $_SERVER['HTTP_REFERER']) ||
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) {
header('Location: http://www.mydomain.com/otherpage.php');
}
,这不会影响整个网站,只是该页面的权利?不工作,我只是得到一个FF消息“问题加载页...重定向以某种方式ff无法解决” – 2011-03-09 20:19:48
如果我只是检查,看看它是一个xmlHTTPrequest(我的)或从允许的域?那会摆脱愚蠢的sessionid吧? – 2011-03-09 20:49:35
你不能在.htaccess中检查自定义标题,但我把解决方案放在php中。 – jcubic 2011-03-09 21:16:38
http://briancray.com/2010/03/18/htaccess-hack-remove-url-query-strings/ – jcubic 2011-03-09 20:10:54
“这将破坏任何功能THAT取决于查询字符串“ - 即时猜测这将是我正常使用的会话ID? – 2011-03-09 20:16:56