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
文件中重定向。)
我有以下 .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
文件中重定向。)