将管理页面隐藏为子域名

时间:2012-02-19 03:11:52

标签: .htaccess mod-rewrite

我的网站有一个管理页面(例如admin.php),通常可以通过mydomain.com/admin.php访问

我希望能够做的是使用htaccess进行映射 “admin.mydomain.com”改为“mydomain.com/admin.php”,以致用户永远不会知道它是“文件”。

也就是说,如果有人在外部尝试访问“mydomain.com/admin.php”,我希望它为404.

现在,对于更难的部分:admin.php页面将要提供链接为“/admin.php?param=value”等,所以我需要查看引用者(???)让它按预期工作。

可以htaccess这样做吗?知道从哪里开始?

2 个答案:

答案 0 :(得分:1)

如果您为admin.mydomain.com设置了与mydomain.com具有相同IP地址的记录以及同一DocumentRoot

然后可以在.htaccess中执行此操作:

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} ^(admin\.) [NC]
RewriteRule ^ %1php [L]

RewriteCond %{REQUEST_URI} admin\.php$ [NC]
RewriteRule ^ - [R=404,L]

答案 1 :(得分:0)

我真的不明白你想要做什么(或者你真的需要拥有页面mydomain.com/admin.php)。

如果您试图从用户“隐藏”它,为什么不实际创建子域,将文件放在子域中,在整个子域上实现安全性,然后不需要乱搞重定向,引用或查询字符串。

为了安全起见,您可能需要执行this

之类的操作

在.htaccess中:

AuthUserFile /path/to/htpasswd/file/.htpasswd
AuthGroupFile /dev/null
AuthName "MyDomain Admin Area"
AuthType Basic
require valid-user

使用this

等生成器创建文件.htpasswd

然后您将无需向用户隐藏该页面,因为如果没有正确的用户名和密码,他们将获得403.