1

我的目标是防止用户弄清楚我为我的网站使用的脚本语言。我的网站的 URL 结构是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]
4

1 回答 1

0
#Condition 1:
RewriteCond %{REQUEST_URI} \.php$
#Condition 3:
RewriteCond %{REQUEST_URI} ![\.jpg|\.gif|\.css|\.js]$
RewriteRule . ?page=error [L]
于 2013-04-14T14:20:17.390 回答