0

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

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

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

有任何想法吗?

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

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

1 回答 1

1

是否可以将用户从 url 重定向http://localhost/welcome?url=1&another=2到 index.php?another=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

其中par1par2和 numeric val2是动态字符串。

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

于 2013-03-19T14:52:57.153 回答