Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему может не работать mod_rewrite?
 
 автор: bishake   (23.08.2010 в 12:46)   письмо автору
 
 

Добавляю в корневую директорию такой .htaccess:

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


Каждый раз при запросе главной страницы, сервер отвечает ошибкой 500.

При этом, если указать хоть один символ в группе паттерна, то всё работает:
   RewriteRule ^(a.*)$ index.php/$1 [L]


Как это можно объяснить???

  Ответить  
 
 автор: .....   (25.08.2010 в 10:28)
 
   для: bishake   (23.08.2010 в 12:46)
 

>index.php/$1

можно обьяснить несуществованием каталога index.php/
и зацикливанием перенаправлений

  Ответить  
 
 автор: bishake   (25.08.2010 в 17:11)   письмо автору
 
   для: .....   (25.08.2010 в 10:28)
 

Эм... вообще-то я уточнил, что данное правило работает:

 RewriteRule ^(a.*)$ index.php/$1 [L]

  Ответить  
 
 автор: .....   (26.08.2010 в 00:00)
 
   для: bishake   (25.08.2010 в 17:11)
 

index.php/a...... не совпадает с ^(a.*)$

  Ответить  
 
 автор: bishake   (28.08.2010 в 00:45)   письмо автору
 
   для: .....   (26.08.2010 в 00:00)
 

ии? о чём Вы?

Два разных правила:
RewriteRule ^(.*)$ index.php/$1 [L] 

RewriteRule ^(a.*)$ index.php/$1 [L] 


При любом запросе в первом случае выдаётся ошибка 500, во втором - всё пучком.

  Ответить  
 
 автор: .....   (28.08.2010 в 02:28)
 
   для: bishake   (28.08.2010 в 00:45)
 

об этом
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
> RewriteRule ^(.*)$ index.php/$1 [L]

К. запрашивает путь /absolute_prodigi
--------------------
. выполнив предписания всех вышерасположенных .htaccess
С. проверяет и находит что /home_drive/path/absolute_prodigi не является файлом
[AND] проверяет и находит что /home_drive/path/absolute_prodigi не является каталогом
значит строку "absolute_prodigi" нужно проверить и в случае совпадения перенаправить ход выполнения запроса.
Совпало.
(Этот момент после "Совпало" бывает отличается на разных реализациях mod_rewrite для разных платформ)
Изменило строку превратив в "index.php/absolute_prodigi"
С. Увидел [L]
С. бросил парсить RevriteRules этого .htaccess
С. пререзарядил сам себе запрос, но уже со строкой /index.php/absolute_prodigi
---------------------
. выполнив предписания всех вышерасположенных .htaccess
С. проверяет и находит что /home_drive/path/index.php/absolute_prodigi не является ......
...............
и так далее , до MaxInternalRecursion
(К. - клиент , С. - сервер)


в случае с ^(a.*) RewriteRule не выполнится второй раз
, ^(i.*) не ^(a.*)

  Ответить  
 
 автор: bishake   (30.08.2010 в 15:35)   письмо автору
 
   для: .....   (28.08.2010 в 02:28)
 

Спасибо за подробное разъяснение. Скажите, почему тогда правило RewriteRule ^(.*)$ index.php/$1 [L] является общепринятым, например для фреймворка CodeIgniter, и работает на большинстве серверов, и лишь на одном возникла такая проблема?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования