我嘗試在 .htaccess 中訪問我網站上的一個頁面,但我的 if 陳述句存在問題,即僅檢查第一個 IP 而從不檢查第二個 IP。我的代碼是:
<If "%{REMOTE_ADDR} != '123.123.123.123'" AND "%{REMOTE_ADDR} != '456.456.456.456'">
RedirectMatch ^/mypage$ example.com [R=302,L]
</If>
我已經用&&insted for進行了測驗,AND但它不起作用。這段代碼有什么問題?
uj5u.com熱心網友回復:
<If "%{REMOTE_ADDR} != '123.123.123.123'" AND "%{REMOTE_ADDR} != '456.456.456.456'"> RedirectMatch ^/mypage$ example.com [R=302,L] </If>
您在這里有多個語法錯誤:
正如您所指出的,您需要使用
&&, 而不是AND在運算式中。沒有運營商AND。雙引號
"應圍繞整個運算式。您基本上有兩個單獨的運算式,這是不受支持的。RedirectMatchmod_alias 指令無效。第三個(標志)引數[R=302,L]是 mod_rewriteRewriteRule指令的一部分,此處不允許使用。目標 URL(第二個引數)需要是根相對 URL 或絕對 URL。
這應該寫成這樣:
<If "%{REMOTE_ADDR} != '123.123.123.123' && %{REMOTE_ADDR} != '456.456.456.456'">
RedirectMatch 302 ^/mypage$ https://example.com/
</If>
但是,我會考慮為此使用 mod_rewrite 。例如:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !=123.123.123.123
RewriteCond %{REMOTE_ADDR} !=456.456.456.456
RewriteRule ^mypage$ https://example.com/ [R=302,L]
RewriteRule 注意:模式匹配的 URL 路徑上沒有斜杠前綴。
如果您打算“阻止”訪問,請考慮發送 403 Forbidden,而不是重定向。例如:
:
RewriteRule ^mypage$ - [F]
或者,如果RedirectMatch在<If>運算式中使用:
RedirectMatch 403 ^/mypage$
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459216.html
標籤:.htaccess
