.htaccess удалить строку запроса, сохраняя URL в стиле SEO
Вопрос:
Можно ли очистить%{QUERY_STRING}
не нарушая никакой функциональности того, что ядостигнуто в моем .htaccess файле.
Я хочу запретить пользователям добавлять?foo=bar
до конца URL перезаписывает любые предопределенные переменные $ _GET
(external re_write) Пример:
От:example.com/foo/bar/hello/world?test=blah
Для того, чтобы:example.com/foo/bar/hello/world
До сих пор я смог сделать это (внутренне):
От:example.com/foo/bar/hello/world
Для того, чтобы:example.com/index.php?foo=bar&hello=world
.htaccess
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^GET\s.+\.(?:html?|php|aspx?) [NC]
RewriteRule ^(.+)\.php$ /$1 [R=301,L,NC]
# To externally redirect /dir/index to /dir/
RewriteCond %{THE_REQUEST} ^GET\s((.+)?(\/)?)?(index) [NC]
RewriteRule ^(([^/]+/)*)index$ /$1 [R=301,L,NC]
# To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_URI}.php [L]
# Prevent Rewrite on existing directories, files, and links
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L] #^ - [L]
# To internally rewrite directories as query string
RewriteRule ^([^/=]+)=([^/]*)(/(.+))?\/?$ /$4?$1=$2 [N,QSA]
RewriteRule ^([^/=]+)/([^/=]+)(/(.+))?\/?$ /$4?$1=$2 [N,QSA]
RewriteRule ^([^/=]+)(/(.+))?\/?$ /$3?$1 [N,QSA]
Что я'мы пробовали: -
#if there is a query string
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule (.*) $1? [R=301,L] #remove query string
#if there is a query string
RewriteCond %{QUERY_STRING} !=""
RewriteRule (.*) $1? [R=301,L] #remove query string
#if there is a query string
RewriteCond %{QUERY_STRING} !=""
RewriteRule ^(.*)$ $1? [R=301,L] #remove query string
Я где-то читал, и испытал это, что применение вышеупомянутого ломает все, что ямы уже сделали. Полностью очистить весь URL, если они замаскированы в переменные $ _GET. Даже вылетает apache 0.o (простите за любой глупый код регулярного выражения или .htaccess, они 're aren 'т мой сильный набор, и большинство из них были фрагменты, которые я нашел на SO)
Это возможно? что-то яя делаю неправильно?
Спасибо