2015-10-05 56 views
1

我想重写一些网址。所以,我有这userAction.php页,我把它改写为/login/这样奇怪的行为与URL重写

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的工作,并没有问题。

回答

1

你会使用%{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标志。

+0

谢谢,但仍然重定向到404页面.. –