【问题标题】:.htaccess mod_rewrite IP-based redirect: how to redirect all traffic to a specific subdirectory, except my IP?.htaccess mod_rewrite 基于 IP 的重定向:如何将所有流量重定向到特定的子目录,但我的 IP 除外?
【发布时间】:2012-01-31 04:57:36
【问题描述】:

我希望我的访问者只能访问我网站的特定部分(博客)。如果他们尝试访问网站的其他区域,我希望他们重定向到博客部分。

我还希望这适用于除我的 IP 地址之外的所有人。

所以结构如下:

mysite.com/blog // visitor access allowed

mysite.com        // redirect to mysite.com/blog

mysite.com/forum  // redirect to mysite.com/blog

mysite.com/tools  // redirect to mysite.com/blog

etc...

您对如何通过 .htaccess mod_rewrite 执行此操作有什么建议吗?

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect


    【解决方案1】:

    您应该能够使用以下内容进行重定向:

    RewriteCond %{REMOTE_HOST} !^123\.456\.789
    RewriteCond %{REQUEST_URI} !^/blog/?
    RewriteCond %{REQUEST_URI} /(.*)$
    RewriteRule (.*) /blog [R=301,L]
    

    【讨论】:

    • 感谢@jordon - 如果我想添加多个 IP 地址,语法是什么?
    • @torr 只需将第一行复制到另一行并继续添加即可。
    • 我认为为了获取 IP 地址,REMOTE_ADDR 比 REMOTE_HOST 更可取。如果启用了HostnameLookups,REMOTE_HOST 不一定会返回 IP 地址(尽管默认情况下这是关闭的)。
    【解决方案2】:

    您应该创建一个处理特定重定向的页面,然后将您的 htaccess 文件编辑为如下所示:

    Options +FollowSymlinks
    RewriteEngine on
    #not your IP
    RewriteCond %{REMOTE_HOST} !^123\.123\.123\.123
    #make sure the rule allows everyone to access the redirect page
    RewriteCond %{REQUEST_URI} !/redirect_page\.html$
    #Send them to the redirect page
    RewriteRule \.html$ /redirect_page.html [R=302,L]
    

    rediret_page.html 可以使用 js 或服务器端重定向来处理它们最终到达的位置,但它会强制所有未访问您 IP 地址的人通过处理重定向的特定页面。

    【讨论】:

    • 澄清一下,我不希望我的用户转到重定向页面 - 我希望他们转到我的博客 (wordpress) 的首页,这通常会显示我是否手动将浏览器指向 mysite.com/blog -- 您的代码是否提供此功能?
    • @torr:你需要做的就是创建重定向页面/blog。无论如何,我可能建议您通过 PHP 重定向页面,因为它会给您更好的控制,但它应该只使用 /blog
    【解决方案3】:

    只需将您的 IP 地址添加到..

    order deny,allow
    deny from all
    allow from xxx.xx.xxx
    

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      相关资源
      最近更新 更多