htaccess url совпадает с реальным каталогом

S
На сайте с 11.03.2010
Offline
29
913

Добрый день, подскажите пожалуйста, возможно ли настроить правила каталогов так, чтобы работало следующие правило.

Есть url: http://site.ru/cat1/cat2/ - это url, который генерирует движок

Необходимо создать на сайте реальные папки ./cat1/cat2/cat3/page.html

Нужно сделать, чтобы у сгенерированного url был приоритет над физическим, т.к.

по адресу http://site.ru/cat1/cat2/ выдавался контент движком, а

http://site.ru/cat1/cat/cat3/page.html отдавал реальный файл page.html

Сейчас если я создаю папку, совпадающую с url, то на запрос соответственно apach

выдает ошибку доступа

Спасибо.

dma84
На сайте с 21.04.2009
Offline
168
#1

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

Но при этом в директории не должно быть индексного файла

S
На сайте с 11.03.2010
Offline
29
#2
dma84:
Но при этом в директории не должно быть индексного файла

Что-то не то, у меня уже есть правило, которое все ссылки перенаправляет на главный index, и ссылка вида site.ru/cat1/ у меня нормально работает, пока я реально не создам каталог cat1.

Либо я неверно понял ваш ответ

dma84
На сайте с 21.04.2009
Offline
168
#3

Поправил выше.

И потом, вы не считаете нужным скинуть свои правила Реврайтов, что бы чужие подсказки с ними не конфликтовали?

В общем добавьте в начале своего правила эти строчки


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
S
На сайте с 11.03.2010
Offline
29
#4

Прошу прощения, вот основной мой htacces

DirectoryIndex index.php

Options -Indexes


php_value max_execution_time 200

php_value session.use_trans_sid 0
php_value session.use_cookies 1
php_value session.use_only_cookies 1

php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag register_globals on
php_flag allow_call_time_pass_reference on
php_flag output_buffering on
php_flag display_errors on

RewriteEngine On

RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !zserver-status


RewriteRule ^(.*)$ ./index.php [L,QSA]

RewriteRule ^url/(.*)$ $1

# If-Modified-Since (if php is not installed as cgi then comment lines below)
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
dma84
На сайте с 21.04.2009
Offline
168
#5

Так, в принципе, должно работать

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !zserver-status <== ???
RewriteRule ^(.*)$ ./index.php [L,QSA]

Все урлы на index.php, а потом из REDIRECT_URI их вытаскиваете?

RewriteRule ^(.*)$ ./index.php [L,QSA]

бред какой-то

RewriteRule ^url/(.*)$ $1
S
На сайте с 11.03.2010
Offline
29
#6

RewriteRule ^url/(.*)$ $1
- остатки отладочной информации, как

и

RewriteCond %{REQUEST_FILENAME} !zserver-status
,

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

у меня изначально было, вытаскиваю их через $_SERVER['REQUEST_URI']

В общем я так понимаю. мне нужно написать правило для папки, чтоб ее скрыть, так как буд-то ее не существует, мне просто интересно, это вообще возможно?

dma84
На сайте с 21.04.2009
Offline
168
#7

RewriteCond %{REQUEST_FILENAME} !-s

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php [L,QSA]
S
На сайте с 11.03.2010
Offline
29
#8
dma84:
RewriteCond %{REQUEST_FILENAME} !-s

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

Все равно пишет, что нет доступа, т.е. пытается найти index файл в папке

---------- Добавлено 07.12.2012 в 10:47 ----------

Получилось закоментировав

RewriteCond %{REQUEST_FILENAME} !-d

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий