使用两个参数进行 URL 重写/重定向

使用两个参数进行 URL 重写/重定向

基本上,我想要这个 URL:

http://domain.tld/auth.php?state=somestate&token=somelongtoken

重写/重定向到此:

http://domain.tld/auth/validate/somestate/somelongtoken

我已经在网上查了很长时间了,但我不知道该怎么做。

另外 - 重定向或重写在这里是最好的吗?

除了通过 API 验证用户之外,我不会使用该 URL 进行任何其他操作,因此它只是在用户访问该页面后重定向用户。

答案1

有一些未经测试的代码...

# Make sure you are accessing auth.php
RewriteCond %{REQUEST_URI} ^/auth.php$
# Check that state and token are present (in that order...)
RewriteCond %{QUERY_STRING} state=[^&]*token=
# Rewrite the URI
RewriteRule ^/auth.php\?state=\([^&]*\)\&token=\([^&]*\)$ auth/validate/\1/\2 [L,QSA]

我会使用重写,因为您说 /auth.php 已经会执行 Location:。发送两个重定向真的毫无意义。另外,这对搜索引擎来说是不好的做法(我知道在这种情况下不会发生这种情况,只是提一下,因为如果它对 SEO 不利,那么对您的用户来说可能就不那么好了。)

请注意,RewriteRule 和先前条件的正则表达式要求这两个查询字符串参数按该顺序排列。您需要多行才能不强制按该顺序排列。但我认为这不是问题。

相关内容