Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > В проекте урл без /index.php выдает ошибку 404


Автор: mstdmstd 15.5.2013, 15:42
Есть сайт
http://dearworld.com.au/dev/index.php/main/blog_view/test%20blog%20blog%20blog/id/38 (Это проект CodeIgniter 2.1)

Проблема в том что если в урле пропустить /index.php 
http://dearworld.com.au/dev/main/blog_view/test%20blog%20blog%20blog/id/38

Выыскакивает ошибка : 
Код

ERROR 404 - PAGE NOT FOUND

[

В .htaccess :
Код

RewriteEngine on
 RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
 
 <FilesMatch "\.(htm|html|css|js|php|images)$">
  allow from all
</FilesMatch>

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

Локально на домашнем компе этот .htaccess работает нормально.

Это какие-то настройки на сервере ненастроены?

Автор: krundetz 15.5.2013, 15:46
mstdmstd, да, видимо не включен модуль mod_rewrite

Ну и ещё у вас .htaccess немного странный? зачем два раза включаете модуль? И ещё есть подозрение что до инструкций:
Код

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]


дело совсем не доходит

Автор: mstdmstd 15.5.2013, 15:53
да вы правы,
подправил его на :
Код


RewriteEngine on
 RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
 
 <FilesMatch "\.(htm|html|css|js|php|images)$">
  allow from all
</FilesMatch>


  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /index.php/$1 [L]



но проблема так и осталась...

Автор: ksnk 15.5.2013, 16:03
Можно добавить параметр RewriteBase в htaccess сразу после RewriteEngine on

Код

RewriteBase /dev/

Автор: krundetz 15.5.2013, 16:07
Цитата(mstdmstd @  15.5.2013,  15:53 Найти цитируемый пост)
да вы правы,

в чем прав что до инструкций дело не доходят или том что модуль не подключен?


да вот ещё одно предположение: если подозрение что инструкции RewriteCond:
Код

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]

здесь работают вместе через логическое и

Автор: mstdmstd 18.5.2013, 14:32
Спасибо за подсказки, я просмотрел как-то что на сайте mod_rewrite вообще отключен
Там установлен Control Panel,  в нем в вхожу в php.ini QuickConfig - там куча опций но  mod_rewrite нет.
Или модуля подключаютсяв другом месте ?

Автор: krundetz 20.5.2013, 09:24
Цитата(mstdmstd @  18.5.2013,  14:32 Найти цитируемый пост)
Спасибо за подсказки, я просмотрел как-то что на сайте mod_rewrite вообще отключен
Там установлен Control Panel,  в нем в вхожу в php.ini QuickConfig - там куча опций но  mod_rewrite нет.
Или модуля подключаютсяв другом месте ?

пожалуйста. С Control Panel не сталкивался поэтому помочь не могу. Если нужен совет по ней, то стоит начать отдельную тему в профильном разделе. И отметьте тему как решенную пожалуйста.

Автор: ksnk 20.5.2013, 10:13
Цитата(mstdmstd @  18.5.2013,  14:32 Найти цитируемый пост)
в нем в вхожу в php.ini QuickConfig - там куча опций но  mod_rewrite нет.

Во первых, mod_rewrite ставится на web сервер а не на php. Так что php.ini никак не поможет его настроить.
Было бы довольно странно, если бы он не стоял. В любом случае, можно проверить есть он или нет с помощью скрипта
Код

<?php
phpinfo();

Он выведет таблицу с конфигурацией. В секции apache2handler с параметре Loaded Modules можно найти mod_rewrite.
Цитата

apache2handler
...

Loaded Modules    
       core... mod_rewrite ...

Если он там есть - то он есть на сервере.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)