Apache .htaccess: Как удалить вопросительный знак из URL, если не `? Id = (. *)`? - PullRequest
2 голосов
/ 03 февраля 2011

Как сделать .htaccess для удалить знак вопроса из URL, если нет ?id=(.*)?

# Rewrite for ?id=(.*)
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule .*$ %{REQUEST_URI}%1? [R=301,L]

# It does not work out on this way
RewriteCond %{QUERY_STRING} !=""
RewriteCond %{QUERY_STRING} !^id=.*
RewriteRule .*$ %{REQUEST_URI}%1? [R=301,L]

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

Правильное правило:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^?#\ ]*)\?[^\ ]*\ HTTP/ [NC]
RewriteCond !{QUERY_STRING} id
RewriteRule .*$ %{REQUEST_URI}? [R=301,L]

Обновление :

# Query rewrite exceptions
RewriteCond %{QUERY_STRING} !callback=.*
0 голосов
/ 28 марта 2013

Если вам нужно http://site.com/page/?YOURSTRING=blabla

перенаправлено на http://site.com/page/

тогда смотрите эту ссылку - https://stackoverflow.com/a/15680832/2215124

0 голосов
/ 06 июля 2011

Это работает?

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

Совет: во время тестирования используйте 302 перенаправления вместо 301, поскольку 301 перенаправления хранятся в браузерах.Наконец вы можете переключиться на классический 301, когда закончите тестирование.

...