如何解决在htaccess中,如何编写仅在特定条件下起作用的RewriteRewriteRuleRewriteCond?
如果请求是针对www.website.com/index.PHP
,我希望显示www.website.com/login/index.PHP
。
但是,如果请求是针对www.website.com/index.PHP?any-query
的,我希望显示www.website.com/index.PHP?any-query
。
换句话说,如果URL包含任何查询,则它将准确回答该地址。否则,所有内容都必须通过/ login /目录中的 index.PHP 。
我希望我已经更清楚地解释了自己。谢谢。
编辑以提高清晰度
我解释问题的模样。当我单击标签<a href="http://www.website.com/index.PHP?r=adm/lostpwd"></a>
(在文件/login/index.PHP
中)时,它会以http://www.website.com/login/index.PHP?r=adm/lostpwd
进行响应,相反,我希望它以http://www.website.com/index.PHP?r=adm/lostpwd
来进行精确响应
编辑2 >>>当前/.htaccess:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+(?:index\.PHP)?\sHTTP [NC]
RewriteRule ^ /login/index.PHP [R=301,L]
当前重定向分析
当前情况如下。当我访问website.com
-
301 https://website.com/ server_redirect permanent https://website.com/login/index.PHP
-
200 https://website.com/login/index.PHP
当我单击/login/index.PHP
时在页面<a href="http://website.com/index.PHP?r=adm/lostpwd"></a>
-
301 http://website.com/index.PHP?r=adm/lostpwd server_redirect permanent https://website.com/index.PHP?r=adm/lostpwd
-
200 https://website.com/index.PHP?r=adm/lostpwd
当我在页面/login/index.PHP
中提交表单时,将生成SSO的链接(header("Location: " . $link);
)。这是产生的流量:
-
302 https://website.com/login/index.PHP server_redirect temporary https://website.com/index.PHP?r=adm/sso&login_user=username&time=1000&token=abcde
-
302 https://website.com/index.PHP?r=adm/sso&login_user=username&time=1000&token=abcde server_redirect temporary https://website.com/index.PHP
-
301 https://website.com/index.PHP server_redirect permanent https://website.com/login/index.PHP
-
200 https://website.com/login/index.PHP
在/login/index.PHP中:
if (password_verify($password_entered,$password)) {
$time = time();
$key = "abcde";
$token = "abcde";
$link = "https://www.website.com/index.PHP?r=adm/sso&login_user=".$user."&time=".$time."&token=".$token;
header("Location: " . $link);
exit;
}
解决方法
您可以在网站根.htaccess中使用以下简单代码:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\sHTTP [NC]
RewriteRule ^ /login/index.php [R=301,L]
确保此.htaccess中没有其他规则,并且 login/
目录中没有.htaccess。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。