Динамические маршруты Laravel по-прежнему доступны с index.php - PullRequest
0 голосов
/ 13 мая 2019

Я уже давно сталкиваюсь с этой проблемой на всех сайтах Laravel, которые я создал, я обнаружил, что маршруты моего сайта все еще доступны, когда я добавил к нему сегмент index.php, например, когда я захожу на свой сайт по этой ссылке - https://alawi.ng/how-it-works ссылка также несколько доступна, когда я добавляю index.php перед названием маршрута. Пример https://alawi.ng/index.php/how-it-works. хотя эта проблема, кажется, не имеет большого значения, она влияет на 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/how-it-works, он перенаправляется на https://alawi.ng/how-it-works, если такой маршрут существует, а если нет, то на страницу 404, которую я уже создал.

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

Спасибо.

1 Ответ

1 голос
/ 13 мая 2019

ИМХО, это проблема, только если 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-адресов и перенаправит пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...