将参数重写为url(example.com?url=/about-us into example.com/about-us)

时间:2012-10-23 13:26:26

标签: apache .htaccess url-rewriting silverstripe

我有一些我希望重写的CMS(SilverStripe CMS)生成的URL。 出于某种原因,可以通过在查询字符串中附加?url=来设置URL。

因此example.com?url=/about-usexample.com/about-us会给出相同的页面 您甚至可以example.com/some-page/?url=/about-us进行操作,但仍然可以访问我们的页面。

那么:如何将包含参数“url”的任何URL重写为domain.tld + URL参数的值? (example.com?url=/about-usexample.com/some-page/?url=/about-us依此类推到example.com/about-us)。

希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:0)

尝试将这些规则添加到文档根目录中的htaccess文件中:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^\?]*\?url=([^&\ ]+)&?([^\ ]*)
RewriteRule ^ /%1?%2 [L,R=301]

这将采用url=<something>查询字符串参数的任何请求,完全忽略URI,并将浏览器重定向到/<something>并附加任何后续查询字符串。