2010-10-17 66 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(); 
} 

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