Как удалить QueryString из URL после перенаправления, удалив «www» в .htaccess

1

Итак, у меня есть сайт, построенный на PHP MVC. Во-первых, я хотел удалить "www" из моего домена, например:

http://www.example.com/ -> http://example.com/

Мой.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [B]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,NC,L]

Это работает нормально, он перенаправляет с www на не-www. Но когда я прошу:

http://www.example.com/Controller/Method/

Перенаправления на:

http://example.com/Controller/Method/?url=Controller%252fMethod%252f

Он добавляет QueryString, и это то, чего я не хочу, когда правильный должен быть:

http://example.com/Controller/Method/

Есть идеи?

Теги:
model-view-controller
.htaccess
redirect
mod-rewrite

1 ответ

1
Лучший ответ

Вам просто нужно добавить ? до конца правила перезаписи, чтобы удалить строку запроса при перенаправлении.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [B]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI}? [R=301,NC,L]
  • 0
    Проблема сохраняется, все еще показывая правильный URL с QueryString http://example.com/Controller/Method/?url=Controller%252fMethod%252f
  • 0
    Вам нужно очистить кеш браузера. 301 кэшировал его.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню