我的目标是阻止用户弄清楚我用于网站的脚本语言。我网站的网址结构为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]
答案 0 :(得分:0)
#Condition 1:
RewriteCond %{REQUEST_URI} \.php$
#Condition 3:
RewriteCond %{REQUEST_URI} ![\.jpg|\.gif|\.css|\.js]$
RewriteRule . ?page=error [L]