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

Форум Apache

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

 

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

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

тема: mod_rewrite: не все запросы отправляются на индекс
 
 автор: kukocapl   (26.01.2012 в 11:39)   письмо автору
 
 

Здравствуйте, уважаемые.
Сразу перейду к конкретике.
С помощью рерайта все запросы отправляются на индекс:
RewriteEngine on
RewriteBase /
RewriteRule ^.*$ index.php

Обычно для того, чтобы разрешить доступ к существующим файлам используют эти условия:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Я же с целью скрытия внутренней организации файлов от посторонних глаз решил при запросе к запрещенному файлу вместо 403 выдавать 404 ошибку. Для этого я создал белый список разрешенных ресурсов примерно так:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !favicon.ico$
RewriteCond %{REQUEST_FILENAME} !viewres/css/.*css$
RewriteCond %{REQUEST_FILENAME} !viewres/img/.*png$
RewriteCond %{REQUEST_FILENAME} !viewres/img/.*jpg$
RewriteCond %{REQUEST_FILENAME} !viewres/img/.*gif$
RewriteCond %{REQUEST_FILENAME} !viewres/js/.*js$
RewriteRule ^.*$ mainrout.php

Но при запросе хттп://домен/.htaccess все равно получаю 403, хотя в теории этот запрос должен быть передан на mainrout.php , я прав?
Спасибо.

  Ответить  
 
 автор: kukocapl   (26.01.2012 в 12:21)   письмо автору
 
   для: kukocapl   (26.01.2012 в 11:39)
 

Покоя мне эта ситуация не дает, поэтому стал проводить опыты и кое-что выяснил...
Возьмем такие правила:
RewriteEngine on
RewriteBase /
RewriteRule ^.*$ index.php

и простенькую структуру сайта:
.htaccess
index.php
somedir/file.php

В этом случае запрос хттп://домен/somedir/file.php отправляется на индекс, но если в папке somedir создать .htaccess и прописать в нем "Deny from all", то на тот же самый запрос придет 403. В связи с этим, как показывает практика, запросы на .htaccess тоже возвращают 403, так как они Deny.
Теперь меня терзает вопрос, можно ли изменить такое поведение?

  Ответить  
 
 автор: deimand   (27.01.2012 в 05:21)   письмо автору
 
   для: kukocapl   (26.01.2012 в 12:21)
 

RewriteEngine on
# разрешить некоторые расширения файлов и некоторые папки
# все остальное будет принимать index, хоть .htaccess пишите
RewriteRule !.(gif|css|jpg|jpeg|png|ico|zip|doc)$|^js|^images|^files index.php [L]

ErrorDocument 403 /404/
ErrorDocument 404 /404/

  Ответить  
 
 автор: kukocapl   (27.01.2012 в 11:57)   письмо автору
35.6 Кб
 
   для: deimand   (27.01.2012 в 05:21)
 

Спасибо за помощь, но как надо не работает :(
RewriteEngine on 
# разрешить некоторые расширения файлов и некоторые папки 
# все остальное будет принимать index, хоть .htaccess пишите 
RewriteRule !.(gif|css|jpg|jpeg|png|ico|zip|doc)$|^js|^images|^files index.php [L] 
ErrorDocument 403 /404/ 
ErrorDocument 404 /404/

По заголовкам все равно ошибку 403 возвращает (скрин).

  Ответить  
 
 автор: deimand   (27.01.2012 в 18:10)   письмо автору
 
   для: kukocapl   (27.01.2012 в 11:57)
 

Действительно... я на заголовки не посмотрел. Видимо ни как от этого не избавиться.

  Ответить  
 
 автор: kukocapl   (11.02.2012 в 15:38)   письмо автору
 
   для: deimand   (27.01.2012 в 18:10)
 

Чтобы 404 статус сервер возвращал, в .htaccess пишем:
RewriteRule !.(css|js|gif|jpg|jpeg|png)$|404.php$ index.php [L]
ErrorDocument 403 /404.php
ErrorDocument 404 /404.php

А в 404.php:
<?php header($_SERVER['SERVER_PROTOCOL'] .' 404 Not Found'); ?>
Не найдено!

  Ответить  
 
 автор: kolyakolya   (11.02.2012 в 14:43)   письмо автору
 
   для: kukocapl   (26.01.2012 в 11:39)
 

Ты наверное дурак!

  Ответить  
 
 автор: kolyakolya   (11.02.2012 в 14:43)   письмо автору
 
   для: kukocapl   (26.01.2012 в 11:39)
 

Все должно работать!

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

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