Apache,在重定向的url之前放置查询字符串?

时间:2013-03-19 13:27:59

标签: php apache mod-rewrite redirect url-rewriting

可以将用户从网址http://localhost/welcome?url=1&another=2重定向到index.php吗?另一个= 2& url = welcome?我的意思是,我想在解析的部分之前放置所有查询字符串。有可能吗?

我知道我可以这样做: RewriteRule ^(.*)$ index.php?%{QUERY_STRING}&url=$1 [QSD,L] 使用$_SERVER[ 'REDIRECT_QUERY_STRING' ]在php中捕获URL,但我想从GET数组中获取查询字符串。

如果我只是获取GET我已经将url等于index.php(文件名),如果我将标志更改为QSA,则在所有重定向后添加查询字符串...

有什么想法吗?

- 编辑 -
我已经检查了一些问题,我发现这是因为循环而完成的。 我已经这样做了,但也许有人更好地知道如何解决这个问题。

RewriteCond %{QUERY_STRING}  !&rw=1$ [NC]
RewriteRule ^(.*)$           index.php?%{QUERY_STRING}&url=$1&rw=1 [QSD,L]

1 个答案:

答案 0 :(得分:1)

  

可以将用户从网址http://localhost/welcome?url=1&another=2重定向到index.php吗?另一个= 2& url = welcome?

是的,您可以在根目录的.htaccess文件中尝试:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}    !index\.php               [NC]
RewriteCond %{QUERY_STRING}   ^url=1&([^=]+)=([\d]+)/?  [NC]
RewriteRule ^(.*)     /index.php?%1=%2&url=$1?          [NC,L]

静默地映射:

http://localhost/par1?url=1&par2=val2

要:

http://localhost/index.php?par2=val2&url=par1

par1 par2 和数字 val2 是动态字符串。

对于永久重定向,将[NC,L]替换为[R = 301,NC,L]