Перепишите параметр в url (example.com?url=/about-us в example.com/about-us)

У меня есть несколько URL-адресов, сгенерированных CMS (SilverStripe CMS), которые я хочу переписать. По какой-то причине можно установить 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).

Надеюсь, кто-то может помочь.


person Nobrainer Web    schedule 23.10.2012    source источник


Ответы (1)


Попробуйте добавить эти правила в файл htaccess в корне вашего документа:

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

Это примет любой запрос с параметром строки запроса url=<something>, полностью проигнорирует URI, перенаправит браузер на /<something> и добавит любую строку запроса, которая будет после.

person Jon Lin    schedule 23.10.2012