Я разрабатываю PHP, MVC, веб-приложение на сервере с fastcgi. Из-за fastCGI мне пришлось использовать знак вопроса в моем RewriteRule следующим образом:
RewriteRule ^(.*)$ index.php?/$1 [L]
но затем, когда я пытаюсь сделать простой 301-редирект, я в конечном итоге перенаправлен на неудобный URL-адрес: http://example.com/bg/home/login?/admin
Мой.htaccess выглядит так:
RewriteEngine On
DirectoryIndex index.php
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
Redirect 301 /admin /bg/home/login
Любые идеи о том, как правильно переадресовать 301?
Вы должны добавить исключение для этого URI после последнего RewriteCond:
RewriteCond %{REQUEST_URI} !^/bg/home/login$
Если вы хотите избавиться от строки запроса, лучший способ - это использовать RewriteRule вместо Redirect. Добавить перед первым RewriteCond:
RewriteRule ^admin$ /bg/home/login? [R=301,L]