За последние 24 часа нас посетили 22086 программистов и 1058 роботов. Сейчас ищут 512 программистов ...

Как сделать, чтобы пользователя кидало на главную?

Тема в разделе "PHP для новичков", создана пользователем Пэлт, 12 май 2020.

  1. Пэлт

    Пэлт Новичок

    С нами с:
    1 апр 2020
    Сообщения:
    103
    Симпатии:
    0
    Как сделать, чтобы пользователя кидало на главную, когда он переходит в несуществующий файл/каталог? А то на рег.ру вот это показывает, я хочу чтобы просто на главную перекидывало.
     

    Вложения:

  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    index.php
    PHP:
    1. <?php
    2.  
    3. declare ( strict_types = 1 );
    4.  
    5. error_reporting ( E_ALL );
    6.  
    7. $path = parse_url ( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
    8.  
    9. if ( file_exists ( $path ) )
    10. {
    11.     require $path;
    12. }
    13. else
    14. {
    15.     echo 'страница не найдена';
    16. }
    .htaccess
    PHP:
    1. AddDefaultCharset UTF-8
    2.  
    3. DirectoryIndex index.php
    4.  
    5. RewriteEngine On
    6.  
    7. # Redirect Trailing Slashes If Not A Folder...
    8. RewriteCond %{REQUEST_FILENAME} !-d
    9. RewriteRule ^(.*)/$ /$1 [L,R=301]
    10.  
    11. # Handle Front Controller...
    12. RewriteCond %{REQUEST_FILENAME} !-d
    13. RewriteCond %{REQUEST_FILENAME} !-f
    14. RewriteRule ^ index.php [L]
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Не надо так делать. Просто выводите свою 404-ую. Ее вывод можно настроить по аналогии с единой точкой входа или при помощи директивы ErrorDocument 404.
    --- Добавлено ---
    P.S. В первом случае статус 404 нужно выдавать самостоятельно.
    --- Добавлено ---
    P.P.S. Доп. условия вроде показанного выше в такой точке входа не нужны. Условие уже указано в конфиге сервера:
    Код (Text):
    1. RewriteCond %{REQUEST_FILENAME} !-f
    Т.е. управление будет передаваться в точку входа только при отсутствии запрашиваемого файла.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Что в результате, отказываемся от ЧПУ в пользу нативного обращения к структуре сайта.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @MouseZver, для ТСа сейчас это данность (ЧПУ у него могут быть построены на основе ФС). Усложнить фронт он всегда успеет. Только торопиться не нужно, чтобы не получились «открытые ворота» вроде тех, что ты показал.
     
    #5 miketomlin, 12 май 2020
    Последнее редактирование: 12 май 2020
  6. Пэлт

    Пэлт Новичок

    С нами с:
    1 апр 2020
    Сообщения:
    103
    Симпатии:
    0
    Я так понял, самый лучший способ - это

    RewriteRule ^404/?$ error404.php [L,QSA]
    errordocument 404 /error404.php
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Ну как, работает ?
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Правило (первая строка) нафига нужно?
     
  9. Пэлт

    Пэлт Новичок

    С нами с:
    1 апр 2020
    Сообщения:
    103
    Симпатии:
    0
    а, да, работает.