Laravel по-русски
      
      
    Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Обратите внимание на 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>Не в сети
Есть как минимум два выхода: <link rel=canonical> чтобы поисковик знал правильный вариант и рерайт адреса.
https://support.google.com/webmasters/a … 9066?hl=en
https://stackoverflow.com/q/25105872/272885
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Вот тут ещё рерайты для nginx есть: https://laracasts.com/discuss/channels/ … completely
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
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
Не в сети
В таком варианте нужно будет использовать str_replace
Даже если так, можно один раз написать функцию-хелпер canonical(), впендюрить в неё всю нужную логику и использовать её в шаблонах.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
https://laravel.ru/index.php/posts/1125
https://laravel.ru/posts/1125
я уже 5 лет на связке nginx+phpfpm
у меня в принципе нет таких ссылок-дупов.
вот вам конфиг вирт хоста
<FQDN> - Fully qualified domain name - Полное имя домена == ставьте своё.
server {
    server_name             <FQDN>;
    root                    /path/to/public;
    access_log              /path/to/log/<FQDN>-access.log;
    error_log               /path/to/log/<FQDN>-error.log;
    include                 /etc/nginx/snippets/defaults.conf;
    client_max_body_size    0;
    client_body_buffer_size 16k;
    location ~ \\.php$ {
        try_files       $uri /index.php =404;
        include         fastcgi_params;
        fastcgi_pass    unix:/var/run/php/php-fpm.h.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param    X-Real-IP           $remote_addr;
        fastcgi_param    X-Forwarded-Ssl     on;
        fastcgi_param    X-Forwarded-For     $proxy_add_x_forwarded_for;
        fastcgi_param    X-Forwarded-Proto   $scheme;
    }
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/<FQDN>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<FQDN>/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
    if ($host = <FQDN>) {
        return 301 https://$host$request_uri;
    }
    listen                  80;
    server_name             <FQDN>;
    return 404;
}Надо будет полный набор конфы - посмотрите мои статьи, там чтото есть старенького.
Совсем приспичет - напишу новую.
Ну или за вознаграждение подниму вам ферму.
Не в сети
Страницы 1