【问题标题】:Restricting public access to entire WP website限制公众访问整个 WP 网站
【发布时间】:2020-04-17 02:59:18
【问题描述】:

我计划对我的网站进行定期维护,并且只想限制对网站或其子页面的任何访问除非它来自我的 IP。我想将其他人重定向到一个临时页面。

我见过修改 htaccess 之类的:

order deny,allow
deny from all
allow from 98.6.000.111

但是1)这不允许我暂时将用户重定向到另一个 HTML 页面和2)说到 暂时,根据我的经验,用户已经让他们的浏览器缓存了 htaccess,即使在我更改它之后,他们仍然被重定向,这显然是不可取的。

是否有其他策略或方法可以防止上述 htaccess 方法出现的问题?

注意:我没有为此使用插件,因为网站正在经历巨大的变化,包括插件/代码/等的交换,所以我需要重定向比 WP 级别的东西更高级别。强>

【问题讨论】:

    标签: wordpress .htaccess


    【解决方案1】:

    您可以使用 302 临时重定向:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REMOTE_HOST} !^98.6.000.111
    RewriteRule .* http://www.anothersite.com [R=302,L]
    

    或者(你几乎猜对了)

    ErrorDocument 403 http://www.anothersite.com
    Order deny,allow
    Deny from all
    Allow from 98.6.000.111
    

    最后一个选项有一些注意事项,具体取决于您的 WordPress 文件夹结构。

    在重定向到子域的情况下,您可以这样做:

    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} !^98.6.000.111
    RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$
    RewriteCond %{REQUEST_URI} !^/yoursubdirectory/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /yoursubdirectory/$1
    RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$
    RewriteRule ^(/)?$ yoursubdirectory/index.html [R=302,L]
    

    解释:

    • 第一行启用 Apache 的重写引擎 mod_rewrite。
    • 第二行检查请求是否来自您的 IP。如果是,则不会发生重定向。
    • 第 3 行确保使用了对 http/https 和 www/non-www 的请求。
    • 第 4 行通过根据您的子目录名称测试请求来防止出现无限循环。
    • 最后一行基本上将所有满足之前所有重写条件的请求重定向到指定的子目录和文件。

    【讨论】:

    • 谢谢。如果我想阻止用户访问 mysite.com、mysite.com/post-title/、mysite.com/activity/members/profile 等,这是否可行允许我将他们重定向到 mysite .com/temporary-brb-page ? (我觉得 htaccess 会做一个无限循环什么的?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2013-11-25
    • 2017-11-05
    • 2010-11-28
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多