Пишем каталог, а думаем файл

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем svetkin, 27 июл 2009.

Статус темы:
Закрыта.
  1. svetkin

    svetkin Постоялец

    Регистр.:
    12 мар 2009
    Сообщения:
    99
    Симпатии:
    15
    Добрый день!!!!!!!!

    Забрал на другой хостинг свой сайт от не очень обязательных людей...

    Но есть проблема... там все ссылки сделаны так Перейти по ссылке, подскажите пожалуйста как заставить сервер думать что на самом деле ему надо искать файл, а не каталог??????
     
  2. svetkin

    svetkin Постоялец

    Регистр.:
    12 мар 2009
    Сообщения:
    99
    Симпатии:
    15
    нашел в корневом каталоге файл, называется mod_rewrite.php
    такого содержания:
    PHP:
    $URL strtolower ($_SERVER["REQUEST_URI"]);

    $V explode ("?"$URL);
    $Name substr ($V[0], 1999);

    if ( 
    $Name[strlen ($Name) - 1] == "/" )
      
    $Name substr ($Name0strlen ($Name) - 1);

    $ALLOWED = array (
    "about",
    "ch2",
    "catalog",
    "prod",
    "contacts",
    "price",
    "offer",
    "news",
    "archive",
    "sitemap",
    "search",
    "category",
    "map",
    "msg",
    "1",
    "gbebi",
    "error404",
    "nnpag1",
    "nnpag2",
    "nnpag3",
    "nnpag4",
    "nnpag5",
    "nnpag6",
    "nnpag7",
    "nnpag8",
    "nnpag9",
    "gibkie-shlangi",
    "vozdushno-teplovye-zavesy",
    "zavesy-frico",
    "nnpag10",
    "getnews");

    if ( 
    $Name == "" )
    {
      require_once 
    "index.php";
      exit;
    }

    if ( 
    $Name == "style.css" )
    {
      include_once 
    "style.css";
      exit;
    }
    if (
    $Name=="gbebi.php")
    {
        include_once 
    "gbebi.php";
      exit;
    }
    if ( ! 
    in_array ($Name$ALLOWED) )
    {
      require_once 
    "error404.php";
      exit;
    }

    require_once 
    "{$Name}.php";
    может это поможет решить проблему!!!!!!!

    Неужели придется в ручную переписывать все ссылки????
     
  3. svetkin

    svetkin Постоялец

    Регистр.:
    12 мар 2009
    Сообщения:
    99
    Симпатии:
    15
    Пытался бороться так:

    Код:
    RewriteEngine on 
    RewriteBase   / 
    RewriteRule ^(.*)\.*$  $1.php [R=permanent]
    но .php добавляется раз 100...

    Получается сл.: Перейти по ссылке...
     
  4. aDolph

    aDolph Создатель

    Регистр.:
    20 апр 2009
    Сообщения:
    21
    Симпатии:
    6
    Видимо у тебя на старом хостинге у Апача мод_реврайт не был подключен и поэтому это было реализовано програмно. Спроси яндекса или гугль .htaccess и узнаешь много интересного про этот файлик.
    Только у тебя в движке нужно смотреть (тот кто програмил движку, если она самописная) настройки ЧПУ (человеко понятные урлы). По идее как у тебя сейчас, должно быть что-то "использовать встроенный мод_реврайт".
    Но сначала уточни, новый хостер тебе предоставляет с апачем мод_реврайт.
    Самый простой способ:
    1) Создаем файл "phpinfo.php"
    2) Пишем в него:
    <?php
    phpinfo();
    ?>

    По идее тебе можно и phpinfo(INFO_MODULES); что бы лишним внимание не отвлекать.
    3) Заливаешь его на свой хостинг и в браузере открываешь.
    Там будет похожее на это:
    apache2handler
    .....
    Loaded Modules - ... mod_rewrite ....
    Тогда смело настраивай .htaccess
     
  5. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    svetkin, У тебя небольшая ошибка в коде. Должно быть так:
    Код:
    RewriteEngine on 
    RewriteBase   /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$  $1.php [R=301]
    
    Тогда правило будет работать только для несуществующих файлов.
    Это поможет, если в движке допустимо вызывать напрямую php файлы страниц.
    Судя по приведенному коду скрипта, это не совсем так. Плюс, в этом mod_rewrite.php производится некоторая защита от дурака и от 404 ошибки.

    Предполагаю, что сам по себе этот скрипт не работет, а также вызывается из главного модуля движка. Короче нужно разбираться с движком.

    Файлы .htaccess забирал со старого хостинга? Бывает, их иногда не видно из ftp-клиента. У тебя видно было скрытые файлы? (те что с точки начинаются)

    aDolph, совет полезный, но судя по тому, что .php дописывается много-много раз, mod_rewrite все-таки есть.
     
    svetkin нравится это.
  6. svetkin

    svetkin Постоялец

    Регистр.:
    12 мар 2009
    Сообщения:
    99
    Симпатии:
    15
    Дело в том, что они сами переносили, сайт с мускулом на мой хостинг, что перенесли тем и распологаю, могу сказать что папки с картинками и файлами для скачивания они не отдали, но это ладно... я их востановлю а сейчас пытаюсь заставить работать все ссылки...

    и благодаря andrnag, заработало!!!!!!!!

    Ребята, спасибо большое за отклик!!!!!!
     
  7. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    Пожалуйста. :) Только этот код немного не безопасен, судя по тому, какие проверки были в mod_rewrite.php. Возможно, стоит явно прописать по правилу на каждое слово из массива $ALLOWED.
     
  8. svetkin

    svetkin Постоялец

    Регистр.:
    12 мар 2009
    Сообщения:
    99
    Симпатии:
    15
    а может, попробовать использовать mod_rewrite.php????

    откуда его можно вызывать???? или опять же в htaccess надо какое-то правило написать???
     
  9. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    Тут уже не могу помочь — не хватает данных. Что за движок? (Скорее всего самописанный — нужно разбираться, как там все было)
     
  10. aDolph

    aDolph Создатель

    Регистр.:
    20 апр 2009
    Сообщения:
    21
    Симпатии:
    6
    В данном случае нужно было самому сделать резервную копию баз и по фтп забрать все папки от старого хостера. Для баз есть Sypex Dumper Lite, а для всего остального файла любой фтп клиент.
    To andrnag: Когда я писал свой ответ, в теме было только первых 2 сообщения. Но форум не хотел сохранять мой ответ, по причине того, что у меня было меньше 5 сообщений (и в пм тоже). Открыл еще одну вкладку и дальше по форуму лазил, пока не заработал 5 сообщение. После отправки своего увидел 3 сообщение. Но на работе не всегда есть время зависать на форумах. Ответ ушел и я свалил работать.
    To svetkin: andrnag верно говорит, нужно смотреть что за движка. На мой взгляд лучше былобы подправить и обойтить только .htaccess, но это моё IMHO.
     
Статус темы:
Закрыта.