我有一个像这样的mod_rewrite规则:
RewriteRule ^(/)?some_path/?$ /wp-login.php [QSA,L]
这允许在wordpress中登录尝试转到some_path,其中apache重写为wp-login,因此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时阻止发送到/wp-login.php的请求,而不是重写的request_uri。
聚苯乙烯。 nginx解决方案的奖励积分虽然可能是一个不同的问题
答案 0 :(得分:4)
而不是REQUEST_URI
使用THE_REQUEST
变量:
RewriteCond %{THE_REQUEST} /wp-login.php
RewriteRule ^ - [F,L]
THE_REQUEST
变量表示Apache从您的浏览器收到的原始请求,在执行某些重写规则后不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1