1

我有一些我希望重写的 CMS(SilverStripe CMS)生成的 URL。出于某种原因,可以通过将 a 附加?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-us等等example.com/some-page/?url=/about-us进入example.com/about-us)。

希望有人可以提供帮助。

4

1 回答 1

0

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

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

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

于 2012-10-23T21:43:36.810 回答