Я обнаружил, что любой веб-сайт laravel доступен с index.php в качестве параметра.
Это большая проблема, index.php в параметре url ломает все изображения.
Посмотрите на реальный пример, чтобы понять, что я имею в виду:
http://www.cyprusalive.com/main-thing/sightseeing
http://www.cyprusalive.com/index.php/main-thing/sightseeing
Робот Googlebot считывает некоторые URL-адреса с index.php в качестве параметра URL-адреса. Это приводит к повреждению всех изображений, когда кто-то получает доступ к веб-сайту из поиска Google с помощью index.php.
Кроме того, это плохая SEO-практика, потому что создают дублированный контент.
Каков наилучший способ исправить это?
Проблема может быть исправлена с правила перезаписи nginx. Используя правило ниже, перенаправьте все URL с помощью index.php
параметр к original laravel route url
location /index.php {
rewrite ^/index.php(.*)$ http://$server_name$1;
}
Также я положил следующее к robots.txt
Disallow: /*index.php*
У тебя есть .htaccess
файл, поставляемый с Laravel в вашем webroot или публичной папке?
Если нет, попробуйте положить это в .htaccess
файл в вашем публичном каталоге:
<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>
Прямо взяли это .htaccess
от Laravel GitHub.
Также вам может понадобиться проверить, включен ли мод перезаписи для вашего веб-сервера.
Поскольку вы используете NGINX, проверьте этот
Также вы можете сделать это просто ……
1. Откройте apache \ conf \ httpd.conf и найдите эту строку
#LoadModule rewrite_module modules / mod_rewrite.so
2. затем удалите [#] и сохраните, затем перезапустите apache