|
|
|
| Здравствуйте, уважаемые.
Сразу перейду к конкретике.
С помощью рерайта все запросы отправляются на индекс:
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 в 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.
Теперь меня терзает вопрос, можно ли изменить такое поведение? | |
|
|
|
|
|
|
|
для: 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/
|
| |
|
|
|
|
 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 возвращает (скрин). | |
|
|
|
|
|
|
|
для: kukocapl
(27.01.2012 в 11:57)
| | Действительно... я на заголовки не посмотрел. Видимо ни как от этого не избавиться. | |
|
|
|
|
|
|
|
для: 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'); ?>
Не найдено!
|
| |
|
|
|
|
|
|
|
для: kukocapl
(26.01.2012 в 11:39)
| | Ты наверное дурак! | |
|
|
|
|
|
|
|
для: kukocapl
(26.01.2012 в 11:39)
| | Все должно работать! | |
|
|
|