Как удалить параметры URL в .htaccess, не взрывая Wordpress - PullRequest
0 голосов
/ 29 октября 2011

Я пытаюсь удалить лишние параметры из дружественного Wordpress URL, например:

/foo-post-name.html?sf123456=1

Я добавил следующую директиву в .htaccess

RewriteRule ^(?!wp-admin))(.*)$ $1? [R=301,L]

И это гарантирует, чтолюбой URL-адрес, кроме / wp-admin, удалит URL-адреса.Однако я только что понял, что мне также нужно исключить URL-адреса, такие как /? P = 12345 & preview = true, из перечня параметров URL.

Я пытался изменить его на:

RewriteRule ^(?!wp-admin|p=))(.*)$ $1? [R=301,L]

...но это не работает (ошибка 500 серверов).Как мне изменить свое регулярное выражение, чтобы /? P = 1234 не перенаправлялось?

Единственные параметры, которые мне нужно поддерживать, это 'p and preview'.

1 Ответ

1 голос
/ 29 октября 2011

Вы не можете сопоставить строки запроса в RewriteRule, но вы можете в RewriteCond использовать *% {QUERY_STRING} *. Это немного грязно, но это то, что вы пытаетесь сделать?

RewriteCond %{REQUEST_URI}   !^/wp-admin
RewriteCond %{QUERY_STRING}  ^p=([0-9]+)
RewriteCond %{QUERY_STRING}  !preview=true
RewriteRule (.*) /$1?p=%1   [L,R=301]

RewriteCond %{REQUEST_URI}   !^/wp-admin
RewriteCond %{QUERY_STRING}  ^p=([0-9]+)
RewriteCond %{QUERY_STRING}  preview=true
RewriteRule (.*) /$1?p=%1\&preview=true   [L,R=301]

RewriteCond %{REQUEST_URI}   !^/wp-admin
RewriteCond %{QUERY_STRING}  !^p=[0-9]+
RewriteCond %{QUERY_STRING}  preview=true
RewriteRule (.*) /$1?preview=true   [L,R=301]

RewriteCond %{REQUEST_URI}   !^/wp-admin
RewriteRule (.*) /$1?   [L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...