Htaccess 为不同的 ip 显示不同的根目录

Htaccess to show different root for different ip's

我有以下 .htaccess 文件:

RewriteEngine On 

RewriteCond ${ipmap:%{REMOTE_ADDR}} ^allow$            [NC]

RewriteRule ^ - [F,L]

我想知道是否可以将 IP 从列表重定向到另一个文件夹,但他们仍然看到相同的 URL (example.com) 而不是 example.com/folder

你可以这样做:

RewriteEngine On 

# Rewrite requests to "/folder" for specific IPs
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^allow$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^folder/ folder%{REQUEST_URI} [L]

您不需要 NC 匹配您的重写映射的规则。 (假设您的 map 始终使用 allow 而不是任何其他混合大小写版本?)

如果要将所有内容重写为 /folder 并且您没有引用 /folder 之外的任何静态资源,那么您也许可以删除两个 条件 执行文件系统检查(以测试请求是否尚未映射到文件或目录)。


作为额外的好处,您可以阻止用户直接访问 /folder 并使用类似以下的内容重定向回根目录 before 上面的重写(立即在 RewriteEngine 指令之后):

# Redirect direct requests to "/folder" back to root
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^folder(?:$|/(.*)) / [R=301,L]

(注意:这确实假设您在 /folder 子目录中没有另一个包含 mod_rewrite 指令的 .htaccess 文件。如果有,那么您需要执行此操作在 .htaccess 文件中重定向。)