Помогите, пожалуйста, настроить Rewrite

R
На сайте с 03.08.2012
Offline
131
789

В корне сайта есть index.php, на него должны идти все запросы. Далее он обрабатывает и выдает нужный файл.

Когда запрос идет вида site.ru/page - он нормально обрабатывает и отображает эту страницу.

Когда запрос идет вида site.ru/dir/ - он тоже нормально, в папке dir запускает файл index.php

А вот когда идет запрос вида site.ru/dir/page - то просто белый экран. Как я понял, он пытается запустить такой скрипт: site.ru/dir/page/index.php

Потому что когда я создал папку и файл: site.ru/dir/page/index.php

То при запросе site.ru/dir/page он открывает site.ru/dir/page/index.php, а мне нужно было чтобы открывал именно это site.ru/dir/page.

Вот .htaccess

RewriteEngine on

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

Помогите, пожалуйста, решить проблему, гугл не помог.

---------- Добавлено 24.04.2014 в 11:24 ----------

Т.е. когда есть этот файл site.ru/dir/page/index.php, он пи запросе site.ru/dir/page автоматом ставит в конце слеш: site.ru/dir/page/ ну и естественно запускает эту папку и файл site.ru/dir/page/index.php...

[umka]
На сайте с 25.05.2008
Offline
456
#1
revered:
То при запросе site.ru/dir/page он открывает site.ru/dir/page/index.php, а мне нужно было чтобы открывал именно это site.ru/dir/page.

Правила в вашем .htaccess указывают серверу сначала пытаться найти файл и выдать его, а если файл не существует, перенаправить запрос в скрипт-обработчик "/index.php", который должен выдать страницу для соответствующего урла.

Если скрипт "/index.php" не выдаёт страницу (или выдаёт пустую страницу), то это уже проблема "/index.php".

Лог в помощь!
R
На сайте с 03.08.2012
Offline
131
#2

В том то и дело что index.php в корне работает нормально, и он не запускается когда белый фон. Т.к. в начале скрипта я написал echo 1; exit(); и все равно также белый фон был. И хотя файл существует он все равно не запускается, т.к. опять же белый фон и в самом файле я писал тоже echo 1; exit(); все равно был белый фон...

[umka]
На сайте с 25.05.2008
Offline
456
#3

Включите подробное логгирование для mod_rewrite, увидите, что же именно запускается.

V
На сайте с 09.02.2011
Offline
38
#4

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

это конечно хорошо а куда девается $1 ??? он не идет как параметры к index.php ?

R
На сайте с 03.08.2012
Offline
131
#5

Когда вместо того чтобы загрузить файл - белый экран. В логах вот какая ошибка:

[Thu Apr 24 23:25:03 2014] [error] [client 82.145.208.194] Negotiation: discovered file(s) matching request: /home/host1323566/site.net/htdocs/www/admin_secret_83281232/tovars (None could be negotiated).

Что она значит?

---------- Добавлено 25.04.2014 в 00:30 ----------

В общем у меня index.php в корне обрабатывает адрессную строку след. образом:

Делит строку на части (explode)

Сперва проверяет первую часть, является ли она директорией, если директории нет, то по умолчанию отображает директорию 'page'. Следовательно такой запрос site.ru/registr преобразуется в site.ru/page/registr.php ну и сотвественно инклудится файл этот.

Сейчас сайт работает таким образом, что site.ru/registr такой запрос обрабатывается нормально, а если в строку сразу написать так site.ru/page/registr, то белый экран и ошибка, которую я присылал.

Подскажите, пожалуйста, как настроить (я думаю проблема в настройке .htaccess) чтобы все работало как надо! Спасибо!

R
На сайте с 03.08.2012
Offline
131
#6

Кто-нибудь знает как решить проблему можно? Может наводки какие дадите?

J
На сайте с 20.02.2014
Offline
120
jkm
#7

отключить Content Negotiation

.htaccess


Options -MultiViews
R
На сайте с 03.08.2012
Offline
131
#8

Опа, заработало! Спасибо большое!)

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