我有一些我希望重写的CMS(SilverStripe CMS)生成的URL。
出于某种原因,可以通过在查询字符串中附加?url=
来设置URL。
因此example.com?url=/about-us
和example.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
)。
希望有人可以提供帮助。
答案 0 :(得分:0)
尝试将这些规则添加到文档根目录中的htaccess文件中:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^\?]*\?url=([^&\ ]+)&?([^\ ]*)
RewriteRule ^ /%1?%2 [L,R=301]
这将采用url=<something>
查询字符串参数的任何请求,完全忽略URI,并将浏览器重定向到/<something>
并附加任何后续查询字符串。