За последние 24 часа нас посетили 22717 программистов и 1006 роботов. Сейчас ищут 717 программистов ...

Убрать index.php CodeIgnitor

Тема в разделе "PHP для новичков", создана пользователем shtrih, 7 янв 2016.

  1. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    Добрый вечер.
    Делаю всё по инструкции
    LoadModule rewrite_module modules/mod_rewrite.so Включил
    Код (PHP):
    1. <Directory />
    2.     Options All
    3.     AllowOverride All
    4. </Directory>
    5. DocumentRoot "/srv/http/www/test62.ru"
    6. <Directory "/srv/http/www/test62.ru">
    7.     Options All
    8.     AllowOverride All
    9. </Directory>
    .htaccess
    Код (PHP):
    1. RewriteEngine on
    2. RewriteCond $1 !^(index\.php|images|robots\.txt)
    3. RewriteRule ^(.*)/index.php/$1 [L]
    В итоге, когда пытаешся заяти без index.php, то выдается:
    404 Page Not Found
    The page you requested was not found.
    В логи видно, что срабатывает, как то странно:
    Код (PHP):
    1. [Thu Jan 07 22:33:37.039332 2016] [rewrite:trace3] [pid 11823] mod_rewrite.c(476): [client ::1:40862] ::1 - - [localhost/sid#1ede3a0][rid#217f950/subreq] [perdir /srv/http/www/test62.ru/] applying pattern '^(.*)$' to uri 'www/test62.ru/Auth'
    2. [Thu Jan 07 22:33:37.039345 2016] [rewrite:trace2] [pid 11823] mod_rewrite.c(476): [client ::1:40862] ::1 - - [localhost/sid#1ede3a0][rid#217f950/subreq] [perdir /srv/http/www/test62.ru/] rewrite 'www/test62.ru/Auth' -> '/index.php/www/test62.ru/Auth'
    3. [Thu Jan 07 22:33:37.039359 2016] [rewrite:trace2] [pid 11823] mod_rewrite.c(476): [client ::1:40862] ::1 - - [localhost/sid#1ede3a0][rid#217f950/subreq] [perdir /srv/http/www/test62.ru/] trying to replace context docroot /srv/http/www/test62.ru with context prefix 
    4. [Thu Jan 07 22:33:37.039374 2016] [rewrite:trace1] [pid 11823] mod_rewrite.c(476): [client ::1:40862] ::1 - - [localhost/sid#1ede3a0][rid#217f950/subreq] [perdir /srv/http/www/test62.ru/] internal redirect with /index.php/www/test62.ru/Auth [INTERNAL REDIRECT] 
    не забывай пользоваться ббкодами. [code=php] для любого кода, включая конфиги. [code] для выводимого текста.
            — модераторъ
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    что такое $1 в условии рерайтера?
     
  3. dcc0

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

    С нами с:
    27 июн 2014
    Сообщения:
    209
    Симпатии:
    4
    Вероятно, второй аргумент команды
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    мне не надо предположений и вероятностей. я спрашиваю у тс что делает баксван в кондишне. он же его туда написал
     
  5. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Код (PHP):
    1. DirectoryIndex index.html index.php
     
  7. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    Это результата не дало

    Уточнение: www/test62.ru/index.php - корень сайта
    CodeIgnitor: www/test62.ru/1/
    Views с правильным index.php в: www/test62.ru/1/views/
     
  8. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    shtrih по какой документации делаешь?
    Версия framework?
    Версия Apache?
     
  9. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    Server version: Apache/2.4.17 (Unix)
    Server built: Oct 15 2015 14:52:20
    CodeIgniter 3.0.3
     
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ясно. а еще погуглить не осталось сил... ничего там бакс-ван не может делать. он еще не определен к этому моменту. замените его на %{REQUEST_URI}
     
  11. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    А попонятнее?

    Единственно, что ещё нагуглил
    Код (PHP):
    1. RewriteEngine On
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule ^(.*)$ index.php/$1 [L] 
    Но итог тотже
     
  12. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    а ты понимаешь как работает то что ты копипастишь? и что непонятного в выражении "замени это на это"?
    вот прочитай мне правила из своего первого поста и из того что ты еще нагуглил. сможешь? они достаточно легко в русский язык трансформируются.
     
  13. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    "замени это на это" - "бакс-ван" к сожалению не знаю, что это.
    RewriteCond - это условие при котором срабатывает правило.
    RewriteRule - правило
     
  14. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    я тебя поздравляю. ты сунулся в программирование где 99% лексем на английском языке с нулевым знанием английского языка. а еще ты сунулся в программирование где очень важна смекалка с нулевой смекалкой. бакс это baks - символ доллара - $. ван - упрощенная транскрипция английского one - один, единица - 1. бакс-ван тождественно равно последовательности $1 о которой я говорил буквально в первом же ответе в этой теме. и больше я ни о чем не говорил. значит я продолжаю ссылаться на $1 говоря бакс-ван. ЛОГИЧНО?

    я не прошу сказать мне что из этого что делает. я прошу перевести тот алгоритм который написан на русский язык. представь себе всё тобою написанное может звучать на русском языке. и очень важно уметь читать эти правила на русском, на русском формулировать правильные правила и потом из русского переводить на лексемы... да на лексемы вообще любого языка программирования. если ты видишь алгоритм то какая разница как каком языке его реализовать? ну естественно надо будет реализовывать на самом подходящем. но сейчас не об этом же.
     
  15. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    Итог:
    Код (PHP):
    1. RewriteEngine on
    2. RewriteCond %{REQUEST_URI} !^(index\.php|images|robots\.txt)
    3. RewriteRule ^(.*)/index.php/%{REQUEST_URI} [L] 
    Код (PHP):
    1. Internal Server Error
    2.  
    3. The server encountered an internal error or misconfiguration and was unable to complete your request.
    4.  
    5. Please contact the server administrator at you@example.com to inform them of the time this error occurred, and the actions you performed just before this error.
    6.  
    7. More information about this error may be available in the server error log.
    8.  
    9. Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
    10.  
    Код (PHP):
    1. [Fri Jan 08 14:55:30.958589 2016] [rewrite:trace2] [pid 13003] mod_rewrite.c(476): [client ::1:44460] ::1 - - [localhost/sid#196e3a0][rid#1c4b818/initial/redir#10] [perdir /srv/http/www/test62.ru/] trying to replace context docroot /srv/http/www/test62.ru with context prefix 
    2. [Fri Jan 08 14:55:30.958598 2016] [rewrite:trace1] [pid 13003] mod_rewrite.c(476): [client ::1:44460] ::1 - - [localhost/sid#196e3a0][rid#1c4b818/initial/redir#10] [perdir /srv/http/www/test62.ru/] internal redirect with /index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//index.php//www/test62.ru [INTERNAL REDIRECT] 
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  16. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    я о каком-то конкретном бакс-ване говорил, не? ты опять забыл головой подумать.
     
  17. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    Я только одного не понимаю, ты правильный .htaccess не можешь написать? Или будем писать "сходи в ->" и < и ^^^^^ ))) ""
     
  18. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Вы друг друга не слышите.

    shtrih, отвлекись от кодеигнайтера, двигайся от простого к менее простому. Оставь в ДокументРут один только index.php в котором выводится REQUEST_URI и .htaccess в котором только рерайт и нет ничего не по теме. И на них добейся чего надо. Пример с !-f точно должен работать, если в принципе рерайтинг работает.
     
  19. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ты не просил тебе готового решения давать. ты в форуме новичков значит мы тут твои знания выправляем. увидев твое правило я сразу задал тебе наводящий вопрос "что делает то-то там-то" но ты вместо того чтоб ответить мне "ну я думаю что оно делает то-то потому что так-то" или честно сказать "я не знаю, потому что в инструкции вообще не разбирают как работает рерайтер" ты начинаешь истерить и закидывать меня новыми правилами рерайта, которые ты тоже не понимаешь потому что тоже только увидел в интернете. а я ведь четко спросил "что делает то-то там-то" и потом так же четко попросил перевести скопипастенные тобой правила на русский язык. внимательнее будь. тут на тебя никто не наезжал.
     
  20. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    Начал с простого. И самое простое тоже не заработало. Что не так? Хотя в логах всё хорошо

    Код (PHP):
    1. Options +FollowSymLinks
    2. RewriteEngine On
    3. RewriteBase /
    4.  
    5. RewriteCond %{REQUEST_FILENAME} !-f
    6. RewriteCond %{REQUEST_FILENAME} !-d
    7. RewriteRule ^(.*)$ index.php [L,QSA] 
    Код (PHP):
    1. [Fri Jan 08 23:50:41.374607 2016] [rewrite:trace3] [pid 13005] mod_rewrite.c(476): [client ::1:48050] ::1 - - [localhost/sid#196e3a0][rid#1c10340/initial/redir#1] [perdir /srv/http/www/test62.ru/] applying pattern '^(.*)$' to uri 'index.php'
    2. [Fri Jan 08 23:50:41.374627 2016] [rewrite:trace1] [pid 13005] mod_rewrite.c(476): [client ::1:48050] ::1 - - [localhost/sid#196e3a0][rid#1c10340/initial/redir#1] [perdir /srv/http/www/test62.ru/] pass through /srv/http/www/test62.ru/index.php 


    Добавлено спустя 1 минуту 28 секунд:
    Честно скажу, я с .htaccess первый раз. Пока мне он не требовался, для моих маленьких задач. Поэтому столько затруднений

    После определенных изменений в настройках апача удалось добиться, что index.php запустился. Но к сожалению обычный. Если используется index.php code igniter, то он отрабатывает не корректно.
    А именно

    Код (PHP):
    1. Options +FollowSymLinks
    2. RewriteEngine On
    3. RewriteBase /srv/http/www/test62.ru/
    4.  
    5. RewriteCond %{REQUEST_FILENAME} !-f
    6. RewriteCond %{REQUEST_FILENAME} !-d
    7. RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
    Код (PHP):
    1. [Sat Jan 09 00:20:58.958642 2016] [rewrite:trace2] [pid 16067] mod_rewrite.c(476): [client ::1:48406] ::1 - - [localhost/sid#a893a0][rid#d26930/initial] [perdir /srv/http/www/test62.ru/] trying to replace prefix /srv/http/www/test62.ru/ with /srv/http/www/test62.ru/, referer: http://localhost/www/test62.ru/
    2. [Sat Jan 09 00:20:58.958648 2016] [rewrite:trace1] [pid 16067] mod_rewrite.c(476): [client ::1:48406] ::1 - - [localhost/sid#a893a0][rid#d26930/initial] [perdir /srv/http/www/test62.ru/] internal redirect with /srv/http/www/test62.ru/index.php/auth/login [INTERNAL REDIRECT], referer: http://localhost/www/test62.ru/
    3.  
    В логах всё вроде хорошо, а страницу не загружает

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  21. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Не понял что именно некорректно. Но кажется должен быть / перед index.
    Вернись к простому и добейся результата для разных адресов.
     
  22. shtrih

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

    С нами с:
    10 дек 2015
    Сообщения:
    59
    Симпатии:
    3
    Оказалось, что не работает с изучаемой мною разработкой "Система авторизации Ion Auth".
    Там везде используется медот перенаправления redirect('auth/login', 'refresh');
    и тогда страница не отображается без index.php, а если использовать стандартный метод
    $this->load->view('auth/login'); то так работает. Что можете посоветовать?

    Добавлено спустя 4 минуты 53 секунды:
    Решение:

    Код (PHP):
    1. RewriteEngine On
    2.  
    3. RewriteRule ^index.php/(.*)/$1 [R=302,L]
    4.  
    5. RewriteCond %{REQUEST_FILENAME} !-f
    6. RewriteCond %{REQUEST_FILENAME} !-d
    7. RewriteCond $1 !^(index\.php|images|robots\.txt)
    8. RewriteRule ^(.*)$ index.php?/$1 [L] 
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  23. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Это действительно разные вещи: маршрут, т.е. "виртуальной адрес" и ссылка на шаблон.
    Рекомендую изучить доки насчёт добавления своего контроллера в маршруты. Я кодигнитор уже подзабыл.

    Добавлено спустя 2 минуты 25 секунд:
    Не успеваю за тобой :)

    П.С. сраный автоисправитель в мобилке. Вреда больше чем пользы - приходится исправлять за ним.