Apache htaccess 规则用于混淆目录名称吗?

Apache htaccess 规则用于混淆目录名称吗?

如何使用文件隐藏目录的真实名称.htaccess并只允许通过其他路径访问它?

是的,这可以通过将管理目录重命名为其他名称来实现,但.htaccess对于多个站点来说使用会更快,并且避免需要更改脚本的配置。

示例 - 默认行为:

  • http://example.com/admin-->/www/admin/index.php
  • http://example.com/admin/test.php-->/www/admin/test.php
  • http://example.com/MySecretPath-->找不到网页
  • http://example.com/MySecretPath/test.php-->找不到网页

示例-使用新配置:

  • http://example.com/admin-->找不到网页
  • http://example.com/admin/test.php-->找不到网页
  • http://example.com/MySecretPath-->/www/admin/index.php
  • http://example.com/MySecretPath/test.php-->/www/admin/test.php

我知道如何将虚假路径重定向到目录:

RewriteEngine On
RewriteBase /
RewriteRule ^MySecretPath$ admin/ [L,QSA]
RewriteRule ^MySecretPath/(.*)$ admin/$1 [L,QSA]
# all remaining requests - sent to the script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

但是我怎样才能让admin/Apache 将存在的目录视为不存在呢?

我还尝试添加这些规则作为解决方法(在第一条规则之上或之下):

RewriteRule ^admin$ i-hope-this-path-doesnt-exist [L,QSA]
RewriteRule ^admin/(.*)$ i-hope-this-path-doesnt-exist [L,QSA]

但它MySecretPath也会影响重定向。除此之外,它http://example.com/admin被重写为http://example.com/admin/(添加了正斜杠),这与转到不存在的路径的行为不同。

相关内容