volodec
@volodec

Как избавиться от index.php в адресе с помощью .htaccess в laravel?

Приветствую, возник вопрос по поводу настройки .htaccess в Laravel.
Раньше мой сайт был написан мной самостоятельно без ЧПУ, со временем перебрался на Laravel. поисковики в списке проиндексированных и находящихся в поиске страниц имеют страницы типа site.ru/index.php?query=123 и не выкидывают их из индекса, эти страницы открывают главную и не идет перенаправления на /. Всё бы ничего, они бы со временем удалились как дубли, но прописанные через url() файлы меняют свои адреса на site.ru/public/index.php/build/css/style-abc123.css.
В корне сайта имеется .htaccess c таким кодом:
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

В папке public стандартный от laravel:
<IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

</IfModule>


Прошу помощи в том чтобы настроить редирект с index.php?query=123 на /?query=123
ЗЫ:Остальные адреса типа site.ru/articles работают как надо
  • Вопрос задан
  • 821 просмотр
Пригласить эксперта
Ответы на вопрос 2
.htaccess
конечно круто но хотелось бы взглянуть еще и на прописные rout
у меня на сайте вот такое:
Корень сайта (domain/www/{laravelfile})
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
     # Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
    </IfModule>

</IfModule>

и (domain/www/{laravelfile}/public)
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
Ответ написан
shambler81
@shambler81 Куратор тега htaccess
Правильно ли я понимаю что у вас был сайт без чпу и с GET запросами.
Тепеерь у вас урлы обычные и вы сделали редирект всех старых урлов на новый сайт на корень ?
Если так то
1. соберите полный список старых проиндексированых урлов.
2. соответствено в экселе соберите список новых урлов по принципу старый урл новый урл.
3. Давай партянкой сюда.
4. Если же вам пофигу на сео то, насколько я понимаю у вас проблема что гет запросы остаются в урле.
Так это решает ся очень просто
^(.*)/$ /$1\? вопрос в конце редиректа удалит все гет запросы, НО ПОСКОЛЬКУ у вас нет списка старых гет запросов ваше правило обрежет и все местные если они будут.
ТАк что вернитесь к пункту 1.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы