За последние 24 часа нас посетили 17419 программистов и 1601 робот. Сейчас ищут 1195 программистов ...

Проблема с несуществующими страницами после .htm/

Тема в разделе "PHP для новичков", создана пользователем dmitry251, 18 ноя 2024 в 13:39.

  1. dmitry251

    dmitry251 Новичок

    С нами с:
    Понедельник
    Сообщения:
    1
    Симпатии:
    0
    всем привет. есть старенький статичный сайт, html с php-include. Назначена обработка для .htm-страниц в htaccess:

    <IfModule mime_module>
    AddType application/x-httpd-ea-php73___lsphp .php .php7 .phtml .htm .html
    </IfModule>

    ErrorDocument 404 /404.htm


    хостинг виртуальный.

    обратил внимание, что если перейти по URL вида:
    https://site.com/valid-url.htm/bla-bla-bla

    открывается та же самая страница https://site.com/valid-url.htm
    причем почему то она считается папкой, и изображения в коде вместо img/image.png пытаются открываться так: https://site.com/valid-url.htm/img/image.png

    при этом если открыть несуществующую url вида https://site.com/bla-bla-bla, то все ок, отдается /404.htm страница как это и положено. т.е. данная история срабатывает только для существующих страниц, к которым приписан слеш.

    что это такое и как это пофиксить подскажите плз?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.103
    Симпатии:
    1.243
    Адрес:
    там-сям
    Изображения запрашивает браузер. Имея такой адрес страницы, он абсолюьно логично шлет запросы на получение картинок как ты показал. Потому что адреса у тебя "относительные". PHP тут совсем не при чём!

    Надо понимать разницу между адресами
    <img src="img/image.png">
    и
    <img src="/img/image.png">

    для ссылок <a href> та же история
     
  3. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    419
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день!

    Если я перехожу по URL:
    https://site.com/valid-url.htm/bla-bla-bla
    https://site.com/valid-url.htm
    https://site.com/valid-url.htm/img/image.png

    у меня открывается одна и таже страница:
    https://www.salesforce.com/de/?ir=1
     

    Вложения:

  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.103
    Симпатии:
    1.243
    Адрес:
    там-сям
    @Vladimir Kheifets я на вас удивляюь.
    Вы же не по сайту топикстартера ходите, а по "взрослому", в котором ссылки абсолютные, не зависящие от текущего адреса. Типа:
    <img src="/path/to/image">
    или даже
    <img src="https://thesite.com/path/to/image">
    ну загляните уже внуть страницы! )))

    Выше я писал про косяк с относительными ссылками вида <img src="path/to/image"> без первого слеша. Этот адрес будет указывать на разные URL-ы в зависимости от базового адреса, т.е. адреса текущей страницы.
    --- Добавлено ---
    @dmitry251 откройте исходный код своей страницы и покажите как у вас выглядит проблемный тег <img> (хотя я и так догадываюсь)
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.103
    Симпатии:
    1.243
    Адрес:
    там-сям
    Код (Text):
    1.  
    2.  
    3. <html>
    4. <head></head>
    5. <body>
    6. </body>
    7.  
    8.     <img src="img/smile.png" alt="1">
    9.     <img src="/img/smile.png" alt="2">
    10.     <img src="../img/smile.png" alt="3">
    11.  
    12. </html>
    Screenshot 2024-11-18 at 18.32.18.png
    Screenshot 2024-11-18 at 18.32.36.png
    Screenshot 2024-11-18 at 18.39.08.png
    --- Добавлено ---
    ↑↑↑ предлагаю топикстартеру подумать самому почему так получается.
    я на эту х%$ню больше тратить время не буду
     
    #5 artoodetoo, 18 ноя 2024 в 19:35
    Последнее редактирование: 18 ноя 2024 в 19:40
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.830
    Симпатии:
    651
    Про ссылки с относительными адресами верно подметили. Но это уже следствие кривой настройки. ТС допустил грубую ошибку, заставив пых обрабатывать файлы с расширением .htm и т.п. Это небезопасно, ресурсоемко и т.п. Ну, и естественно тут же нарисовался PATH_INFO.

    Решение. PATH_INFO отключаем. И вместо «грубой силы» используем рерайт .htm в .php (при наличии соотв. php-файлов).

    Более грамотное решение. PHP-сайт на одних лишь инклудах – это поделка на уровне школоты. Лучше перенести на что-нибудь более вменяемое, отделяя контент о шаблонов.
    --- Добавлено ---
    А чтобы дубли с расширением .php было трудно найти, кладем их все в какой-то секретный каталог:
    /page.htm -> /секретный каталог/page.php
    /category/page.htm -> /секретный каталог/category/page.php
    --- Добавлено ---
    А вообще в норм. сайте лучше тоже использовать абс. пути в ссылках на внутряк и на главную. Относительные иногда могут быть полезны, но в общем без них можно прожить.
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    419
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Простите, не понял, чем Вас так удивил. Я скопировал проблебные URL из топика в адресную строку браузера и написал, что увидел.
    Про косяки во внутренних ссылках, которые Вы описали, не возражал, согласен.
    Удачи!
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.103
    Симпатии:
    1.243
    Адрес:
    там-сям
    А! Вы скопировали... но я так понимаю, ТС писал "site.com" как абстрактный домен, чтобы не деанонимизироваться. А вы сходили по ссылке и, опа!, она открылась (с редиректом на другой адрес)! Я этого не понял, извините.
    Уверен сайт Salesforce не имеет отношения к обсуждаемому вопросу.