htaccess - удалить строку запроса из URL, но оставить значение - PullRequest
0 голосов
/ 08 января 2019

Я искал по всему Stackoverflow и Googled широко и далеко, но я не могу выполнить эту, казалось бы, простую задачу.

Я пытаюсь установить правило в htaccess для очистки URL, удалив строку запроса, но оставив ее значение без изменений:

http://example.local/?p=subscribe

становится:

http://example.local/subscribe

Я пробовал эти различные методы:

RewriteEngine on
RewriteCond %{QUERY_STRING}
RewriteRule (.*)  /$1? [R=301,L]

или

RewriteCond %{QUERY_STRING} ^p=$ [NC]
RewriteRule ^(/?)?$ $1? [R=301,L,NC]

или

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?([^\ ]+)
RewriteRule ^$ /%1? [R=301,L]

Но ничего не работает!

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Имейте это в своем .htaccess:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/([^?]*?)/?\?p=([^\s&]+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ ?p=$1 [L,QSA]
0 голосов
/ 09 января 2019

Вы можете использовать%, чтобы получить переменные rewriteCond

RewriteCond %{QUERY_STRING} ^p=(.*)$ [NC]
RewriteRule ^(.*)?$ %1? [R=301,L,NC]

Преобразует любой URL http: /site.com/url? Qs в http: /site.com/qs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...