2010-10-17 54 views
0

我還沒有找到我目前的問題的所有答案。HTACCESS - 阻止一切,但指定SEO友好的URL

這裏是網站的根目錄:

  • 緩存
  • IMG
  • Display.php的
  • admin.php的

我需要的是屏蔽所有的直接訪問的文件,並只允許通過URL格式化訪問:

1 ht * p://sub.domain.com/image/param/size/folder/img.jpg(param,size,folder,img are parameters)
2 ht * p://sub.domain。 COM /動作/參數1 /參數2 /(參數1,參數2爲參數)

1將指向用正確的參數到Display.php的
2將指向用正確的參數到admin.php的
每隔訪問必須是404(最好)或403

我的規則是(htaccess的是HT * p://sub.domain.com/):

RewriteRule ^image/([^/]+)/([0-9]+)/([^/]+)/([^/]+)\.jpg display.php?param=$1&size=$2&folder=$3&img=$4 [L] 
RewriteRule ^action/([^/]+)/([^/]+) admin.php?action=$1&param=$2 [L] 

這些規則正如我所願地工作,但我堅持如何阻止任何來自這些URL的訪問!

另外(作爲獎勵)我希望能夠在不同的網址上使用相同的htaccess,而無需更改此文件。

在此先感謝

+0

如何阻止其中有問號「?」的所有請求? – 2010-10-17 04:26:43

+0

在PHP級別做,否則你會進入遞歸地獄。 – Ben 2010-10-17 04:28:01

回答

0

你有沒有嘗試移動圖像進行公用文件夾和使用PHP來調用圖像?

對於PHP文件,您可以使用switch語句(http://www.php.net/switch)。

對於admin.php的文件,你可以這樣做:

$get_action = $_GET['action']; 

switch ($get_action) { 
    case "edit": 
    case "view": 
    case "delete": 
    case "add": 
     //Continue loading the page 
     break; 
    default: 
     header('HTTP/1.1 403 Forbidden'); 
     die(); 
} 

注:我不知道你的代碼看起來或工作,但你可以在我添加的代碼的想法基地。