.htaccess VS каталоги (ЧПУ)

Uman
На сайте с 07.03.2012
Offline
41
786

Ребята, всем привет. Помогите новичку пожалуйста...

Мною была поставлена цель убрать расширения .php в адресе страниц сайта и в этом мне помог код, найденный на просторах интернета:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Всё отлично работает, но возникла другая проблема. Если в одной директории сайта есть СТРАНИЧКА и ПАПКА с одним и тем же названием:

то набрав вручную адрес странички, открывается вместо неё папка (каталог):

Скажите пожалуйста, что нужно дописать в .htaccess, чтобы вместо каталогов открывались одноимённые странички?

Очень надеюсь на вашу помощь. :confused:

siv1987
На сайте с 02.04.2009
Offline
427
#1

Для начала убрать листинг файлов. Потом добавить DirectorySlash Off

Uman
На сайте с 07.03.2012
Offline
41
#2
siv1987:
Для начала убрать листинг файлов. Потом добавить DirectorySlash Off

Друг спасибо тебе огромное!

Листинг я убрал с помощью Options -Indexes, как ты и сказал - это получилось.

А вот DirectorySlash Off никак не подействовал. В чём я мог ошибиться?

Пробовал уже и так и экась...

Вот код моего файла .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Options -Indexes
DirectorySlash Off

А вот, что выдаёт браузер при введённой ссылки на файл www.mysite/download (он же www.mysite/download.php по сути):

Помогите люди добрые 🍾

siv1987
На сайте с 02.04.2009
Offline
427
#3

Вот это тоже убрать RewriteCond %{REQUEST_FILENAME} !-d

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

Uman
На сайте с 07.03.2012
Offline
41
#4
siv1987:
Вот это тоже убрать RewriteCond %{REQUEST_FILENAME} !-d
если не поможет, спрашивайте у своего хостера почему не работает и какие директивы нужно отрубить.

siv1987, огромнейшее тебе спасибо за помощь, дай Б-г тебе всех благ в личной жизни!

Все твои советы пригодились и заработали после того, как я почистил кэш браузера, то есть:

1) С помощью Options -Indexes отключился список файлов;

2) С помощью DirectorySlash Off убрался слэш (заработало после чистки кэша браузера)

но этого не хватило, поскольку по прежнему выбивало ошибку...

Заработало после того, как я вписал исключения для каждого случая в отдельности.

Вот как я решил один из случаев, со скриншота выше:

3) RewriteRule ^download download.php (то есть ^имя каталога и имя файла - одно и то же имя)

После этого всё заработало!

siv1987, если знаешь как упростить 3-й) пункт, чтобы одним правилом охватить несколько таких исключений, то напиши пожалуйста, чтобы довести код до ума.

Ещё один раз спасибо! :D

siv1987
На сайте с 02.04.2009
Offline
427
#5

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

Uman
На сайте с 07.03.2012
Offline
41
#6
siv1987:
Вообщето достаточно было просто удалить ту строку которую я указал, и не нужны никакие исключения.

Блин, ты абсолютно прав. Сейчас повторно протестил твой (первый) вариант и он заработал без моих костылей, чудеса... Походу просто в ненужный момент у меня опять закэшировалась Opera и поэтому не сработало.

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