Как убрать возможность переходить по файлам после .php?
Добрый день, у меня есть страницы (файлы) на сайте вида:
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?
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/ на основную страницу запроса.
<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.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы предотвратить возможность перехода по файлам после .php, можно использовать файл .htaccess и настроить RewriteRule для перенаправления всех запросов на файлы .php обратно на главную страницу или на другую страницу.
Вот пример кода, который можно добавить в файл .htaccess:
RewriteEngine On RewriteCond %{REQUEST_URI} \.php$ RewriteRule ^(.*)$ / [R=301,L]
Этот код будет перенаправлять любые запросы к файлам .php обратно на главную страницу сайта.
Если вы хотите перенаправить на другую страницу, замените "/" на путь к этой странице. Например, если вы хотите перенаправлять на страницу "error.php", замените "/" на "/error.php".
Не забудьте сохранить изменения в файле .htaccess и удостовериться, что модуль mod_rewrite включен на вашем сервере.
После применения этих настроек, пользователи больше не смогут переходить по файлам после .php.