Что прописать в htaccess, чтоб при запросе папки к пути не добавлялся слэш?

Neptoon
На сайте с 12.07.2011
Offline
126
1484

de - папка

Нужно, чтобы вместо site.com/de/ было site.com/de

И таких папок несколько

Сейчас такой htaccess

RewriteEngine On
RewriteBase /


# redirect www
RewriteCond %{HTTP_HOST} ^www\.site\.com
RewriteRule ^(.*) http://site.com/$1 [R=permanent,L,QSA]


# redirect http to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


# remove index.php and index
RewriteCond %{THE_REQUEST} (?:/[^/]*)*/index\.php[?#\ ]
RewriteRule .* %{REQUEST_URI}/../ [L,R=301]
RewriteCond %{THE_REQUEST} (?:/[^/]*)*/index[?#\ ]
RewriteRule .* %{REQUEST_URI}/../ [L,R=301]


#remove end-slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]


#remove .php and redirect
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]

Drive your way
iren K
На сайте с 28.12.2008
Offline
222
#1

RewriteCond %{REQUEST_URI} ^([^.]+)/$

RewriteRule ^[^.]+/$ /%1 [QSA,L]

c уважением Iren
J
На сайте с 20.02.2014
Offline
120
jkm
#2
Neptoon:

#remove end-slash 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]


#remove .php and redirect
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]

Этот фрагмент заменить на такой:

#remove end-slash

RewriteRule ^(.+)/$ /$1 [R=301,L]


#remove .php and redirect
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]

RewriteCond %{DOCUMENT_ROOT}/$1/index.php -f
RewriteRule ^(.+)$ $1/index.php [L]

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

DirectorySlash off

Тогда при запросе /de будет вызван /de/index.php

Если удалить правило:

RewriteCond %{DOCUMENT_ROOT}/$1/index.php -f

RewriteRule ^(.+)$ $1/index.php [L]

То при запросе /de будет вызван /de.php

totamon
На сайте с 12.05.2007
Offline
437
#3
Neptoon:
Нужно, чтобы вместо site.com/de/ было site.com/de

где вы такие дикие идеи берете? зачем ломать, то что правильно работает?

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
Neptoon
На сайте с 12.07.2011
Offline
126
#4
totamon:
где вы такие дикие идеи берете? зачем ломать, то что правильно работает?

На мой вкус, без слэша смотрится красивее.

Спасибо за помощь с кодом, сделал чуть по-другому.

Aisamiery
На сайте с 12.04.2015
Offline
293
#5
totamon:
где вы такие дикие идеи берете? зачем ломать, то что правильно работает?

а можно уточнить где написано что это правильно? :)

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
S
На сайте с 30.09.2016
Offline
469
#6
Aisamiery:
а можно уточнить где написано что это правильно? :)

А сами не можете поискать? Если на конце слэш - сервер начинает искать именно папку (каталог, directory), если без слэша - обычный файл. Вроде как общеизвестная вещь.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Aisamiery
На сайте с 12.04.2015
Offline
293
#7
Sitealert:
А сами не можете поискать? Если на конце слэш - сервер начинает искать именно папку (каталог, directory), если без слэша - обычный файл. Вроде как общеизвестная вещь.

читал исходный документ RFC3986 нет там такого, где я еще должен был поискать не совсем понятно

PS. В терминологии ОС папка это тоже файл если что.

PPS. Вы еще давайте тут начните заливать, что все урлы без расширения на конце должны заканчиваться на слеш

SeVlad
На сайте с 03.11.2008
Offline
1609
#8
Neptoon:
На мой вкус, без слэша смотрится красивее.

Нда.. кому-то шашечки, а кому-то ехать. Бывает.

Aisamiery:
а можно уточнить где написано что это правильно?

Можно я попробую догадаться?:

totamon:
то что правильно работает?

Иными словами - такая логика работы заложена разработчиками сайта/движка.

А где написано что это неправильно?

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
S
На сайте с 30.09.2016
Offline
469
#9
Aisamiery:
читал исходный документ RFC3986 нет там такого, где я еще должен был поискать не совсем понятно

Это логика работы апача

Если запрашивается каталог (т.е. путь заканчивается /), обрабатывается файл, заданный директивой DirectoryIndex. Например, в случае директивы

DirectoryIndex index.html index.php

эапрос http://www.example.com/fish/ приведёт к попытке обработать файл /var/www/html/fish/index.html. В случае, если этот файл не существует, следующей попыткой будет обработка файла /var/www/html/fish/index.php.
То есть ясно написано, что апач воспринимает URL как каталог при наличии слэша на конце.
Aisamiery:
Вы еще давайте тут начните заливать, что все урлы без расширения на конце должны заканчиваться на слеш
Ни в коем случае. Разговор идёт именно про папку, у ТС вопрос именно про неё. Папка - это физически существующий каталог (directory).

Про роутинг речи нет, это совсем другая история.

M
На сайте с 04.12.2013
Offline
223
#10

Neptoon, см. mod_dir DirectorySlash. Нужно изменить дефолтное значение на Off или отключить сам модуль. Пример того, что можно написать в .htaccess, найдете в первой кодовой вставке тут.

Только учтите, что у вас могут возникнуть проблемы с относительными адресами в соотв. адресной ветке, т.к. вы меняете уровень вложенности тек. адреса в браузере. Используйте абс. адреса, например формата /path, или лучше не лезьте в это дело.

Для сомневающихся демка от меня: http://g09.ru/files (все каталоги в этой ветке, включая files, существуют физически).

---------- Добавлено 01.05.2019 в 20:13 ----------

Sitealert, а ты уверен, что ТСу где-то нужен автоиндекс глубже корня?

Даже если автоиндекс не сработает, что мешает дописать этот рерайт самому?

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts

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