我尝试了无数的论坛组合,Stack Overflow上的答案和博客。我无法正常工作。
我想将所有用户重定向到子目录 - “/ const” - 除了我认为值得的IP。
这是我到目前为止所使用的:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^91\.143\.253\.211
RewriteCond %{REQUEST_URI} !^/const/ [NC]
RewriteRule ^(.*)$ http://website.com/const/$1 [R=302,L]
它正确地重定向到子文件夹,但它仍然重定向我,这很糟糕。
很少帮忙?
答案 0 :(得分:2)
您可以使用Skip flag [s]
。这是一个包含多个IP的示例。
RewriteEngine on
RewriteBase /
RewriteCond %{REMOTE_ADDR} ^91\.143\.253\.211$ [OR]
RewriteCond %{REMOTE_ADDR} ^8\.8\.8\.8$
RewriteRule .? - [S=1]
RewriteCond %{REQUEST_URI} !^const [NC]
RewriteRule ^(.*)$ /const/$1 [R=302,L]
注意强>
在我有%{REQUEST_FILENAME}
之前的例子中。这通常仅适用于服务器配置文件,其中文件名本身的路径对重定向脚本可见。在这里,我已将其更改为%{REQUEST_URI}
浏览器实际可以访问的请求部分。
答案 1 :(得分:0)
您拥有的规则是正确的。当我将它们添加到空白的htaccess文件时,我会按预期重定向到http://website.com/const/
,除非我将第一个条件更改为我的实际IP。你应该检查的一些事情:
确保您实际上是从预期的IP(即^91\.143\.253\.211$
)发出请求。您可以通过将此规则添加到htaccess文件的顶部来测试:
RewriteRule ^foo$ http://foo.bar/IP/%{REMOTE_ADDR} [L,R]
如果您转到http://website.com/foo
,您应该被重定向到不存在的网站,但网址中包含您的IP。如果该IP与91.143.253.211
不匹配,那么您需要更改条件以匹配正确的IP。