我是 Apache 新手,我发现理解重写规则语法非常困难。
这是我的设置:我在 mydomain.com 有一个 Wordpress MU 站点我已经停放了指向 mydomain.com 的域 site1、site2.com
我想要什么:我希望这个 URL http://mydomain.com/wp-login.php重定向到相同的地址,但首先使用 https。我已经看过几个关于如何做到这一点的教程,但是有一个问题。
我的问题:如果我使用类似的东西
#RewriteCond %{HTTPS} !=on
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这也将我的其他站点重定向到 https 版本,因为它们是停放的域并有效地加载了相同的 htaccess 代码;由于我拥有的证书仅适用于 mydomain.com,因此我收到证书错误。
我只需要保护 mydomain.com 上的页面,而只需要保护 wp-login.php 页面。另一个问题是这个页面可以在 URL 中移动,IE:
mydomain.com/wp-login.php
mydomain.com/somecracp/wp-login.php
mydomain.com/wp-login.php?xys=5653
我需要一个正则表达式来检测 mydomain.com 的域名和 URL 中任意位置的 wp-login.php。然后我需要为他们强制使用 https。任何人都可以为我构建代码吗?
更新:我可能已经找到了问题的一部分。似乎登录页面本身也在尝试进行一些重定向。当我访问站点http://mysite.com/wp-admin的管理部分时,它会检测到您未登录;然后它会将您重定向到登录页面,但在末尾附加一个 redirect_to 查询字符串,如下所示:
http://mydomain.com/subdomain/wp-login.php?redirect_to=http%3A%2F%2Fmydomain.com%2Fsubdomain%2Fwp-admin%2F&reauth=1
这样做似乎是为了在您成功登录后,它可以将您重定向到您之前尝试访问的管理部分。这个“redirect_to”以及它后面的内容是您登录后将重定向到的 URL。
我不会详细说明为什么,但是有没有办法可以强制它覆盖上面的 URL 以访问 mydomain.com/wp-login.php 而没有任何 rediret_to 废话?