2011-03-09 56 views
0

在我的網站上,我在訪問頁面表單內容時使用會話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

+0

http://briancray.com/2010/03/18/htaccess-hack-remove-url-query-strings/ – jcubic 2011-03-09 20:10:54

+0

「這將破壞任何功能THAT取決於查詢字符串「 - 即時猜測這將是我正常使用的會話ID? – 2011-03-09 20:16:56

回答

1

你忘了換行

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'); 
} 
+0

,這不會影響整個網站,只是該頁面的權利?不工作,我只是得到一個FF消息「問題加載頁...重定向以某種方式ff無法解決」 – 2011-03-09 20:19:48

+0

如果我只是檢查,看看它是一個xmlHTTPrequest(我的)或從允許的域?那會擺脫愚蠢的sessionid吧? – 2011-03-09 20:49:35

+0

你不能在.htaccess中檢查自定義標題,但我把解決方案放在php中。 – jcubic 2011-03-09 21:16:38