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