URL 重写的奇怪行为
Strange behavior with URL rewriting
我正在尝试重写一些 url。所以我有一个 userAction.php
的页面,我将它重写为 /login/
像这样
RewriteRule ^login/$ /userAction.php [L]
现在在该页面上登录我有两种形式 - 登录和注册。当用户完成注册并完成时,页面仍然是 userAction.php,但带有消息:userAction.php?action=joined
。我想将其重写为 login?action=joined
。这是我尝试过的,但它将我重定向到 404 错误
RewriteRule ^login?action=joined/$ /fun-second/userAction.php?action=joined [L]
所以这是全部.htaccess
RewriteRule ^login/$ /userAction.php [L]
RewriteRule ^login/?action=joined/$ /userAction.php?action=joined [L]
这是注册成功后的跳转
header('Location: login/?action=joined/');
exit;
注意:正常情况下URL可以正常工作,没有问题。
您将使用 %{QUERY_STRING}
变量来匹配它。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(action=joined)$ [NC]
RewriteRule ^login/$ /userAction.php?%1 [NC,L]
RewriteRule ^login/$ /userAction.php [NC,L]
规则的顺序也很重要。或者,您可以尝试以下方法:
RewriteEngine On
RewriteRule ^login/$ /userAction.php [QSA,NC,L]
注意上面的 QSA
标志。
我正在尝试重写一些 url。所以我有一个 userAction.php
的页面,我将它重写为 /login/
像这样
RewriteRule ^login/$ /userAction.php [L]
现在在该页面上登录我有两种形式 - 登录和注册。当用户完成注册并完成时,页面仍然是 userAction.php,但带有消息:userAction.php?action=joined
。我想将其重写为 login?action=joined
。这是我尝试过的,但它将我重定向到 404 错误
RewriteRule ^login?action=joined/$ /fun-second/userAction.php?action=joined [L]
所以这是全部.htaccess
RewriteRule ^login/$ /userAction.php [L]
RewriteRule ^login/?action=joined/$ /userAction.php?action=joined [L]
这是注册成功后的跳转
header('Location: login/?action=joined/');
exit;
注意:正常情况下URL可以正常工作,没有问题。
您将使用 %{QUERY_STRING}
变量来匹配它。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(action=joined)$ [NC]
RewriteRule ^login/$ /userAction.php?%1 [NC,L]
RewriteRule ^login/$ /userAction.php [NC,L]
规则的顺序也很重要。或者,您可以尝试以下方法:
RewriteEngine On
RewriteRule ^login/$ /userAction.php [QSA,NC,L]
注意上面的 QSA
标志。