htaccess从URL限制网页文件

时间:2013-04-14 13:12:08

标签: .htaccess mod-rewrite url-rewriting

我的目标是阻止用户弄清楚我用于网站的脚本语言。我网站的网址结构为http://example.com/login/,即http://example.com/?page=login

page参数检查文件是否存在。例如?page = login 将检查 login.php 文件是否存在,并将其作为请求的页面包含在 index.php 文件中加载。如果该页面不存在,那么 error.php 页面将被替换,称“找不到页面”。

我想在这些条件下触发错误页面(将?page = error 添加到查询中):

  

条件1:文件扩展名已添加到请求的URI中。   示例:http://example.com/login.php甚至index.php文件,   http://example.com/index.php

     

条件2:该文件不存在。例:   http://example.com/notinserver.php或   http://example.com/notinserver.whatever

     

条件3 :文件扩展名不是 css,js,jpg,jpeg,gif或   png 文件(http://example.com/images/logo.jpg)。为了说清楚,   URI必须没有句点,除非它是允许的扩展名,例如   http://example.com/css/style.css

     

条件4 :写入http://example.com/index/时。网页   不需要包括自己。

我无法通过条件1,因为服务器因默认页面http://example.com/的无限重定向或写入 index.php 而引发内部错误。这是我到目前为止所做的:

RewriteEngine On
RewriteBase /

RewriteRule ^([a-z]+)/ ?page=$1

RewriteCond %{REQUEST_URI} \.
RewriteRule . ?page=error [L]

1 个答案:

答案 0 :(得分:0)

#Condition 1:
RewriteCond %{REQUEST_URI} \.php$
#Condition 3:
RewriteCond %{REQUEST_URI} ![\.jpg|\.gif|\.css|\.js]$
RewriteRule . ?page=error [L]