За последние 24 часа нас посетили 26449 программистов и 1545 роботов. Сейчас ищет 821 программист ...

mod_rewrite без .htaccess

Тема в разделе "PHP для новичков", создана пользователем Freakmeister, 6 май 2013.

  1. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Во многих движках используются "красивые ссылки", но в .htaccess при этом ничего не прописывается. Пытался разобраться как это работает на примере Wordpress - там в бд есть таблица prettyurls, в которой содержатся синонимы адресов. Нагуглил также, что в вордпрессе используется mod_rewrite. Но как он используется без .htaccess я так и не понял. Поясните, ежели кто знает. =\
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Например?
    Если нет .htaccess, то те же правила прописаны в конфиге Apache или Ngnix. Если и там не прописаны, то такого быть не может.
    Можно без реврайта подобие чпу сделать так: сайт.com?about/me
     
  3. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Что самое странное, я вообще не нашел упоминания слова "prettyurls" ни в файлах вордпресса, ни в бд. После удаления .htaccess, синонимы ссылок перестали работать. Содержимое такое:
    Код (Text):
    1. RewriteEngine on
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule ^(.*)$ index.php [L,QSA]
    Сейчас вот пробую ковырять ImageCMS - та же фигня, урлы лежат в БД:
    [​IMG]
    А в .htaccess прописано следующее:
    Код (Text):
    1. AddDefaultCharset UTF-8
    2.  
    3.  
    4. Options +FollowSymLinks
    5. Options -Indexes
    6.  
    7. RewriteEngine on
    8.  
    9. # RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]
    10. # RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]
    11.  
    12.  
    13. RewriteCond $1 !^(index\.php|test.php|user_guide|uploads/.*|favicon\.ico|favicon\.png|captcha/.*|application/modules/.*/templates|templates|js|robots\.txt|application/controllers/install/images/.*)
    14. RewriteRule ^(.*)$ /index.php/$1 [L]
    15.  
    16. ####################################
    17. # or
    18. # RewriteRule ^(.+)$ index.php?$1 [L]
    19. # or
    20. # RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
    Добавлено спустя 19 минут 49 секунд:
    Короче, по первому (простому) варианту, я так понял, что этот .htaccess заставляет любые ссылки ссылаться на index.php. А потом можно брать $_SERVER['REQUEST_URI'] и парсить его.
     
  4. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    в бд лежат алиасы, движок формирует ссылку на основе этих алиасов, при открытии страницы, в базе происходит поиск по алиасу и открывается соответствующая страница. Т.о. двух алиасов быть не может. Вроде так...
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    может. раньше часто можно было встретить реализации чпу на базе 404-го обработчика. и все как обычно сводилось к поиску адреса в бд
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Круто, чё, попадалось на глаза как-то, но не стал вникать. А почему "раньше", не удобно?
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну имхо уродство это. а раньше потому что вроде школьники научились пользоваться рерайтом и оставили обработчик ошибок для обработки ошибок.
     
  8. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Да, разобрался по вордпрессу, там это происходит именно так - парсинг $_SERVER['REQUEST_URI'], формирование ссылки и редирект на нее. Буду пробовать писать нечто подобное.

    Ещё возник вопрос - стоит ли заморачиваться с ссылками типа blog/entry/35, как в CodeIgniter? Есть ли в этом хоть какой-то профит с точки зрения SEO?
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =) а это смотря что тебе надобно, старче
     
  10. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Опять igordata со своими "смотря что".)) Блог я пишу простенький, личный блог быдлокодера, так сказать. Ресурсов на хостинге осталось копейки, вордпресс уже не пашет. Решил накатать с нуля, чтобы вообще не жрало.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    о_О
    мало ресурсов? это сколько?
     
  12. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Короче проблема такая. Вордпресс работает, но когда логинюсь и пытаюсь открыть админку - Firefox выдает "Соединение было сброшено":
    http://clip2net.com/clip/m190239/1367680450-clip-130kb.jpg
    А Google Chrome пишет "Данные не получены":
    http://clip2net.com/clip/m190239/1367680484-clip-126kb.jpg
    Решения не нагуглил, на форумах поддержки сидят сплошные дебилы. Сунулся в Ubuntu, пробил top, помониторил нагрузку, выяснилось что когда я пытаюсь зайти в админку вордпресса, свободная оперативка сжирается вся.
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да это фатал какойнить в пхп

    Добавлено спустя 16 секунд:
    в логи смотри
     
  14. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    А куда оно лог пишет? И пишет ли вообще? Обычно "фатал" в php отображается как белый экран же.
     
  15. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    все от настроек зависит. можно указать файл журнала, уровень ошибок, вывод в поток, состояние запуска, состояние парсера. на продакшене чаще всего отключают вывод в поток но без журналирования не оставляют. ибо как отлаживать-то?
     
  16. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Сейчас проверил ещё раз - это нифига не память. На этот раз стопорнул основной сайт (заменив его на html-страничку а-ля "stand by"), и Team Speak, крутящийся на том же сервере. После чего зашел в Putty, вбил top, и начинал агрессивно ломиться в админку. Результат - свободная память не опускалась ниже 50 мегов:
    http://clip2net.com/clip/m190239/1367953206-clip-292kb.jpg
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    такая же х. у айолы

    Добавлено спустя 2 минуты 34 секунды:
    нет. если например даже пхп:
    Код (PHP):
    1. <?php
    2. echo 'sdfgdsfgsdfgdgs'; 
    изредко какает мне:
     
  18. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а точно работает на всех этапах прохождения запроса? резолв, соединение?
     
  19. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Это точно не "фатал" в пхп. Пробовал вбивать в .htaccess:
    Код (Text):
    1. php_flag display_startup_errors on
    2. php_flag display_errors on
    3. php_flag html_errors on
    4. php_flag log_errors on
    5. php_value error_log /var/www/maestro-magnifico.ru/1/PHP_errors.log
    И вбил в index.php чуть ли не через каждую строчку (ибо страдаю легкой паранойей):
    Код (Text):
    1. error_reporting(E_ALL);
    2. ini_set('error_reporting', E_ALL);
    В итоге лог ошибок пустой.
     
  20. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
     
  21. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Я не знаю что такое резолв, но я могу денег дать.)) Ежели кто-то сможет разобраться с проблемой и запилить вордпресс на моем хостинге.)
     
  22. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    погоди, а что не открывается? адрес по приложенным скриншотам ввел - пашет. и сайт и админка.
     
  23. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Не открывается только после того, как ты залогинился в админку. Короче если будет возможность помочь, мой скайп: maestro_magnifico
    Я пока пробую другую CMS и если она мне не понравится, буду всё-таки дописывать своё.
     
  24. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Короче хэппи энд, посоны - я отдал 1000р фрилансеру за то что он просто заменил мой php.ini своим. При этом он даже суть проблемы не выявил. Х_Х Всем с подобными симптомами копать в php.ini!