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

时间:2015-12-01 12:02:24

标签: apache .htaccess mod-rewrite url-rewriting friendly-url

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

说我的网址为example.com/setup/,我在example.com/setup/?cloud=true

的同一页面略有修改版本

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

访问该页面的修改版本

它必须是一个实际的规则(而不是只有1个重写1),因为整个网站使用了这种模式。

基本上,如果?cloud=true位于网址的末尾,则该网页需要在完全相同的网址上访问,但最后使用/cloud/而不是?cloud=true

以下是我认为最接近正确规则的情况,但可能仍有一段距离:

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

1 个答案:

答案 0 :(得分:1)

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

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

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