我如何遮掩我的WordPress安装通过htaccess?

(我知道不build议通过默默无闻的安全)。

我试图隐藏我使用WordPress的事实。 这篇文章是有帮助的,但它只处理内容(sorting)。 我有兴趣发生以下情况:

  1. 用户试图通过浏览器以wp*作为子string访问任何url。

    结果:redirect到404页面。

  2. 博客用户/pipe理员知道为了login他们应该去http://example.com/blogin/

    结果: apache将它们redirect到http://example.com/wp-admin/

  3. 如果用户试图从他们的浏览器直接访问wp-admin ,他们会被发送到#1。

    结果:redirect到404页面。

我迄今为止所做的事情

  1. 我注意到一个WordPress的默认安装,我可以访问WP安装的(相对)根目录中的任何wp*文件。 具体来说wp-settings.php是有问题的,因为它提供了关于我的设置的信息。 如果用户访问它,它会发出一些PHP错误,并显示部分目录结构。 我编辑我的php.ini文件closuresdisplay_errors 。 现在访问http://example.com/wp-settngs.php会popup一个空白页面。

  2. 这本身并不理想,因为它揭示了wp-settings.php存在。 事实上,访问所有不同的wp*文件是可能的(具有不同的结果)。 然后我把我的htaccess文件中的以下内容:

      RewriteEngine On RewriteBase / RewriteCond %{PATH_INFO} wp* [NC] RewriteRule .* - [F] 

    这很好! 任何与一个wp*被路由到我的自定义404页面。 但是现在我无法访问我的pipe理页面。

  3. 我试图插入这一行到上面的代码: RewriteRule ^blogin wp-admin [NC,R,L] 。 它应该是正确的后RewriteBase但这不起作用。

  4. 我试图做一个:

     <Directory /home/example/wp*> Order Allow, Deny Allow from example.com Deny from all </Directory> 

    希望从我的网站(通过重写规则)referer将能够访问wp-admin,而不是来自外部的人。 这也没有工作。 阿帕奇抱怨说,你不能从htaccess使用这个指令。

我已经阅读了Apache文档; 我从理论上理解这些概念,但是我需要一些实际的帮助。

编辑:我正在寻找一个解决scheme,使用.htaccess而不是httpd.conf,因为我特别的设置使得使用httpd.conf不一致。

TLDR; 只有在.htaccess文件中使用指令才能隐藏WordPress。

现在来到一个悲惨的故事。 我们的朋友fbh对于隐藏WordPress的困难是正确的,对黄腹懦弱的人来说不是。 编曲! 这里是这个(错误)冒险的细节。 你要警告!

动机

我是那些喜欢完美的东西之一。 我会浪费时间过度devise一些东西来成为“正确的方式”。 我不喜欢默认的WordPress设置的一件事情是,用户可以inputhttp://ex.com/wp-settings.php ,然后所有这些PHP术语将遍布整个地方。 我最终能够通过PHPclosures错误,但这导致了更多的愿望,只有从服务器上获得可定位资源的东西…而其他所有东西都会被404/3化为我们的自定义search页面。 之后,我得到了这个想法,我想完全隐藏底层框架(即WP)…反正…如果你想隐藏WP是可能的。 但是真的很难

走向你的厄运

  1. 修改你的PHP ini设置。 (即closures显示错误)您可能认为这是不必要的,因为如果我们使用.htaccess重新路由的东西,人们不会看到错误,因为他们无法访问错误导致的资源(我在看着你wp-settings.php )。 但是显示的页面可能会出现错误,所以你一定要closures它们。 仅仅因为设置了WP_*指令并不一定意味着事情将按照您认为的方式工作。 我发现在我的服务器上,我不得不将display_errors设置为false,因为WP_DISPLAY_ERRORS认为默认设置是false。

    控制PHP ini设置可能就像在你的.htaccess文件中添加一个指令一样简单。 或者,在我的情况下,像创build一个CGI处理程序,然后把一个php.ini文件那里复杂。 YMMV取决于你的设置。

  2. 使用wp-前缀删除对文件/目录的所有访问。 这个想法是,你的WP部署是关于你的内容,而不是关于WP(除非它专门关注WP)。 人们不想看到什么http:// ex.com/wp-cron.php …除非他们不合格。 我通过这样做了:

      # If the resource requested is a `wp-*` file or directory, poop to a 403. RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f [NC,OR] RewriteCond %{REQUEST_FILENAME} -d [NC] RewriteRule .* - [F,L] 
  3. 学习如何通过mordor通过删除对wp-*所有访问,您将无法再访问WP的pipe理部分。 这真的很糟糕。 除了那个downer之外,你刚刚意识到你不知道RewriteCond %{ENV:REDIRECT_STATUS} ^$的确如此。 那么,我试图做的是给WP自己的一个“秘密”后门pipe理页面。 我用这个代码:

      # If the resource requested is 'mordor' (with or without an ending # slash) do a URL rewrite to `wp-login.php`. RewriteCond %{REQUEST_URI} mordor/?$ [NC] RewriteRule mordor/?$ /wp-login.php [NC,L] 

    所以URL: http : //ex.com/mordor应该把我们带到login页面。 之所以在上面的步骤中使用REDIRECT行,是因为这个URL被重写为一个wp-* URL,所以我们不希望第一个重写规则得到它。 由于它正在被内部redirect,所以REDIRECT_STATUS将被正确设置,并且不会将我们推到403/4地。

  4. 删除wp-content WordPress.stackexchange有一个关于删除wp-content的很棒的文章。 你必须重新定义一些WP常量,这很有效。 您还必须将所有来自wp-content访问redirect到“无论wp-content ”。 如果这是一个干净的部署,这可能不会是一个问题。 如果你正在修改已有的部署,你将不得不做一些额外的工作。

  5. 重写URL到wp-content 可选 RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L] 。 这在你的.htaccess文件中。 如果您的用户尝试通过wp-content URL访问一些旧内容,则会在这里redirect。

  6. grep并replace您的数据库中的wp-content的所有引用可选 。 你的数据库中仍然有wp-content 。 如果你想要WP免费,你需要摆脱那些东西。 我导出/ mysql转储我的数据库,做了一个search,并将wp-contentstringreplace为新的string。 你可能会说…为什么我必须这样做,如果Apache将重写我的url? 问题是源代码将包含这些引用,所以如果你真的有兴趣模糊WordPress,你需要这样做。 注:在这一点上,我应该停下来接受现实,这是不行的。 但我希望T先生可怜我。

  7. 将所有对wp-includeswp-admin引用replace为源代码。 很多WordPress的function取决于这两个目录: wp-includeswp-admin 。 这意味着这些目录名称在源代码中是硬编码的。 这意味着你将不得不创build新的目录(因为PHP使用底层的操作系统文件系统,而不是apache)来访问这些目录,然后将这些文件写入发出的html中。 这太麻烦了。 我迅速放弃了,去了洗手间,以便大便。

当然,我可以刚刚阅读http://codex.wordpress.org/Hardening_WordPress并遵循这些步骤&#x3002; 但我想要完美的网站。 现在我只想要所有这些小时。 阻止我停止的最大的事情是,我没有阅读互联网上的任何地方,这是很多工作,几乎不可能做到。 相反,我读到的人试图做到这一点,而不知道他们是否成功。 所以,对于我过去的自己,我将通过苹果公司的Time Machine发送给我,请不要尝试和晦涩的WordPress。 这不值得。

如果你试图隐瞒你是因为使用了wordpress而使用了wordpress,那么你确实有一些工作要做。 如果你使用wp *技巧,那么wp-content和wp-includes呢? 如果没有能够达到这些,你会打破这一页,它会看起来很可怕。

另外,在Wordpress中有这么多的东西,这确实需要一些工作 – 而且当安装升级时,您很可能不得不再次执行大量工作。 (因为Apache中的一些redirect不会起作用)

如果你只是想把它从每个人的先生和太太那里隐藏起来,那么当然你应该能够用一些默默无闻的方式做到这一点。

你读过“强化Wordpress”指南吗? 如果没有,你应该检查出来: http : //codex.wordpress.org/Hardening_WordPress它给你很多事情,你可以做一个很好的介绍。

另外,如果你急于隐藏你使用Wordpress的事实,为什么要使用它?

尝试在Apacheconfiguration中进行configuration。 这可以包含像/etc/wordpress/htaccess这样的文件。 这将允许您使用Directoryconfiguration指令。 但是,您将需要重新启动Apache来加载更改。 如果您不希望服务中断,请使用正常重启。

要使用.htaccess文件限制目录访问,它们需要位于相应的目录中。 它们的function非常类似于Directoryconfiguration指令的内容。 您可能需要在您的apacheconfiguration中启用所需的.htaccess选项。 这种方法不如在apacheconfiguration中使用命令那样高效,因为它需要频繁地重新进行。