我有一个像这样的mod_rewrite规则:
RewriteRule ^(/)?some_path/?$ /wp-login.php [QSA,L]
这允许wordpress中的登录尝试进入到Apache重写为wp-login的some_path,因此wordpress可以处理它而不必知道此重写。
我现在想通过mod_rewrite一起阻止对wp-login的访问,但是如果我制定如下规则:
RewriteCond %{REQUEST_URI} /wp-login.php
RewriteRule ^ - [F,L]
现在该规则块非常完美,除了它也阻止了对/ some_path的调用之外,我认为这是因为mod_rewrite会不断循环,尽管所有规则都存在,并且最初/wp-login.php不匹配,当some_path被重写为/ wp时-login.php会完全阻止它。
有一些优雅的方法可以解决这个问题吗?基本上,我只想在原始request_uri是wp-login而不是重写的request_uri时才阻止去/wp-login.php的请求。
附言 Nginx解决方案的奖励积分,尽管可能是另一个问题
代替REQUEST_URI
使用THE_REQUEST
变量:
RewriteCond %{THE_REQUEST} /wp-login.php
RewriteRule ^ - [F,L]
THE_REQUEST
变量表示Apache从您的浏览器收到的原始请求,在执行某些重写规则后不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句