.htaccess - 如何将任何 URL 末尾的查询重写为干净的 URL

.htaccess - how to rewrite a query at the end of any URL to a clean URL

我觉得我已经尝试了一切来做一个相当简单的重写,但我就是无法让它工作!不过我真的不是 htaccess 专家。

假设我的 URL 是 example.com/setup/ 并且我在 example.com/setup/?cloud=true

的同一页面上有一个稍微修改过的版本

我需要可以在 example.com/setup/cloud/

访问该页面的修改版本

它需要是一个实际的规则(而不是直接的一对一重写),因为整个网站都使用这种模式。

基本上,如果 ?cloud=true 在 URL 的末尾,则需要在 URL 完全相同的位置访问该页面,但在 /cloud/结束而不是 ?cloud=true

以下是我认为最接近正确规则的内容,但可能还有很长的路要走:

RewriteCond %{QUERY_STRING} ^(.*)/cloud$
RewriteRule ^(.*)$ ?cloud=true

以下规则集应达到预期目的:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET\ /(.+)\?(cloud)=true
RewriteCond %{QUERY_STRING} ^cloud=true$
RewriteRule ^ /%1/%2? [R=301,L]

RewriteRule ^(.+)/cloud/?$ /?cloud=true [NC,QSA,L]