Как убрать возможность переходить по файлам после .php?

Ссылка скопирована
1 ответ

Добрый день, у меня есть страницы (файлы) на сайте вида:

https://site.ru/generator_zagadok.php
https://site.ru/generator_klichek.php

и так далее. В Вебмастере вижу, что есть переходы по адресу /generator_zagadok.php/zagadki.js при этом страница открывается, но уже без стилей и скриптов, вероятно из-за несоответствия путей до файлов стилей и скриптов.

Мне нужно сделать так, чтобы либо такие страницы редиректились на основную страницу запроса, либо выдавали 404 ошибку, либо как это правильно сделать, чтобы доступ к такому не был возможен. Спасибо.
Использую обычный хостинг (jino), php 8.0, apache web server

Дополнительно:

Скорее всего у вас берутся пути до стилей исходя из параметров запроса, найти и прибить пути гвоздями

  • /generator_zagadok.php/zagadki.js при этом страница открывается, но уже без стилей и скриптов

    Открывается страница html или же скрипт JS zagadki.js?

  • Если вы уверены что это прям прямые переходы, а не косяк в путях. То можно в .htaccess добавить правила на переадресацию например:
    RewriteEngine On RewriteRule ^generator_zagadok.php/.*$ https://site.ru/generator_zagadok.php [R=301,L] RewriteRule ^generator_klichek.php/.*$ https://site.ru/generator_klichek.php [R=301,L]

    RewriteEngine On RewriteRule ^generator_zagadok.php/.*$ https://site.ru/generator_zagadok.php [R=301,L] RewriteRule ^generator_klichek.php/.*$ https://site.ru/generator_klichek.php [R=301,L]

    Это должно перенаправить запрос, начинающийся с /generator_zagadok.php/ или /generator_klichek.php/ на основную страницу запроса.

  • ProjectSoft, страница html
  • <IfModule mod_rewrite.c>     RewriteEngine On      RewriteCond %{REQUEST_FILENAME} !-d     RewriteCond %{REQUEST_FILENAME} !-f     RewriteRule ^ index.php [L] </IfModule>

    <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>

    Все запросы к несуществующим файлам будут отправляться на index.php

    • Спасибо, для SEO вреда не нанесёт это ?
    • Александр Андропов, если у вас единая точка входа, роутинг, то нет. Если у вас каждый файл php открывается как есть (отдельным модулем), то да.
    • Одиночка Айс, с какого перепуга? Это просто перенаправление с несуществующих файлов/директорий. Если файл page.php существует, то он откроется. И проиндексируется.
    • Однако стоит учесть, что любые адреса будут открываться с кодо 200, что ожет нанести вред. В это случае файл index.php ожет наприер отдавать код 404.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Стас DB Ответ

    Для того чтобы предотвратить возможность перехода по файлам после .php, можно использовать файл .htaccess и настроить RewriteRule для перенаправления всех запросов на файлы .php обратно на главную страницу или на другую страницу.

    Вот пример кода, который можно добавить в файл .htaccess:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} \.php$
    RewriteRule ^(.*)$ / [R=301,L]

    RewriteEngine On RewriteCond %{REQUEST_URI} \.php$ RewriteRule ^(.*)$ / [R=301,L]

    Этот код будет перенаправлять любые запросы к файлам .php обратно на главную страницу сайта.

    Если вы хотите перенаправить на другую страницу, замените "/" на путь к этой странице. Например, если вы хотите перенаправлять на страницу "error.php", замените "/" на "/error.php".

    Не забудьте сохранить изменения в файле .htaccess и удостовериться, что модуль mod_rewrite включен на вашем сервере.

    После применения этих настроек, пользователи больше не смогут переходить по файлам после .php.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно