Динамические маршруты Laravel по-прежнему доступны с index.php

Я уже довольно давно сталкиваюсь с этой проблемой на всех сайтах Laravel, которые я создал, я обнаружил, что маршруты моего сайта все еще доступны, когда я добавил к нему сегмент index.php, например, когда я посещаю свой сайт по этой ссылке - https://alawi.ng/как это работает ссылка также доступна, когда я добавляю index.php перед именем маршрута. Пример https://alawi.ng/index.php/как это работает. хотя эта проблема, кажется, не имеет большого значения, она влияет на SEO-рейтинг моего сайта, вызывая дублирование маршрута или контента, пожалуйста, мне нужна помощь.

Вот что у меня есть на моих сайтах .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}]


    RewriteCond %{REQUEST_METHOD} ^TRACE
    RewriteRule ^ - [F]
    <Files .env>
        order allow,deny
        Deny from all
    </Files>
</IfModule>

Вот что у меня есть в моем файле web.config

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name = "Imported Rule 1" stopProcessing = "true">
          <match url = "^(.*)/$" ignoreCase = "false" />
          <conditions>
            <add input = "{REQUEST_FILENAME}" matchType = "IsDirectory" ignoreCase = "false" negate = "true" />
          </conditions>
          <action type = "Redirect" redirectType = "Permanent" url = "/{R:1}" />
        </rule>
        <rule name = "Imported Rule 2" stopProcessing = "true">
          <match url = "^" ignoreCase = "false" />
          <conditions>
            <add input = "{REQUEST_FILENAME}" matchType = "IsDirectory" ignoreCase = "false" negate = "true" />
            <add input = "{REQUEST_FILENAME}" matchType = "IsFile" ignoreCase = "false" negate = "true" />
          </conditions>
          <action type = "Rewrite" url = "index.php" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>


Мне нужна ситуация, когда он либо перенаправляет пользователя на фактический URL-адрес, удаляя из него index.php, поэтому, когда пользователь пытается получить доступ к https://alawi.ng/index.php/как это работает, он получает перенаправление на https://alawi.ng/как это работает, если такой маршрут существует, и если это не так, на 404 страница, которую я уже создал.

PS: я использую Linux-сервер, общий хост и установил папку хранилища на 775.

Спасибо.

дубликат stackoverflow.com/questions/35501041/…

mustafa96m 13.05.2019 02:15

Привет. Можешь помочь мне с моим вопросом

Neon Emmanuel 13.05.2019 13:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
534
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ИМХО, это проблема только в том случае, если Google знает об URL-адресах, содержащих index.php, чего, вероятно, не знает.

Если вы хотите быть в безопасности, вы можете:

  • добавьте канонический метатег в свой шаблон, указывающий на URL без index.php.
  • добавьте эти строки в ваш файл .htaccess чуть ниже RewriteEngine on:
    # Remove 'index.php'
    RewriteCond %{THE_REQUEST} /index\.php [NC]
    RewriteRule (.*?)index\.php/?(.*)?$ /$1$2 [R=301,NE,L]

Эта конфигурация удалит index.php из всех URL-адресов и перенаправит пользователя.

Другие вопросы по теме