Итак, у меня есть сайт, построенный на 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/
Есть идеи?
Вам просто нужно добавить ?
до конца правила перезаписи, чтобы удалить строку запроса при перенаправлении.
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]
http://example.com/Controller/Method/?url=Controller%252fMethod%252f