Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php[^/] /$1? [L,R=302,NC,NE]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php(?:/(.*))?$ /$1$2? [L,R=302,NC,NE]
Данное решение мне помогло.
С canonical сложнее,
<link rel="canonical" href="{{ url()->current() }}" />
Формирует URL с /index.php/other/url/map
В таком варианте нужно будет использовать str_replace
Обратите внимание на URL
https://laravel.ru/index.php/posts/1125
https://laravel.ru/posts/1125
Открывается одна и та же страницы. Для поисковой системы это дубли. Как решить этот баг. Такая проблема на всех сайтах Laravel
Прикладываю свой htaccess.
Прошу не путать проблемы с DocumentRoot, когда не правильно настроен вследствие чего появляется "public/index.php" - это не тот случай.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Страницы 1