index.php в качестве параметра в URL веб-сайта laravel

Я обнаружил, что любой веб-сайт 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-практика, потому что создают дублированный контент.

Каков наилучший способ исправить это?

3

Решение

Проблема может быть исправлена ​​с правила перезаписи nginx. Используя правило ниже, перенаправьте все URL с помощью index.php параметр к original laravel route url

location /index.php {
rewrite ^/index.php(.*)$ http://$server_name$1;
}

Также я положил следующее к robots.txt

Disallow: /*index.php*
2

Другие решения

У тебя есть .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.

Также вам может понадобиться проверить, включен ли мод перезаписи для вашего веб-сервера.

Ссылка Как проверить, включен ли mod_rewrite на сервере?

1

Поскольку вы используете NGINX, проверьте этот

0

Также вы можете сделать это просто ……

1. Откройте apache \ conf \ httpd.conf и найдите эту строку

#LoadModule rewrite_module modules / mod_rewrite.so
2. затем удалите [#] и сохраните, затем перезапустите apache

0
По вопросам рекламы [email protected]