Сайт имеет такие URL.
домен/katalog/kategogiya/strnica_tovara.php
Каталог и категория, это естественно, Views страницы, на них много ссылок на товары.
Я хочу, чтоб они отображались со слеш на конце как директория то есть
домен/katalog/
Страницы товаров это тип материала Товар нужно, чтоб там слэша не было
домен/katalog/kategogiya/strnica_tovara.php
Переношу статичный сайт на Drupal, хотелось бы не ломать старые ссылки.
Возможность зайти и со слеш и без недопустима. По умолчанию Drupal убивает все слэш в конце URL.
Как это проще всего настроить?
Комментарии
Попробуйте использовать модуль trailing_slash
Спасибо, но этот модель ставит слеш абсолютно везде и настроить это нельзя. Для меня бесполезен.
Нужно примерно вот это:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.[a-z]*/?$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ $1/ [L,R=301]
# Rewrite rule to strip trailing slashes from virtual files.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.[a-zA-Z]*/?$
RewriteCond %{REQUEST_URI} /$
RewriteRule ^(.*)/$ $1 [L,R=301]
но на уровне Drupal, а не сервера.
Через .htaccess, наверняка, коллизии будет т.к. получается надстройка о которой ядру ничего не известно. Все опции в CMS без учета этой оптимизации.
Почему нельзя настроить? Потому что нет в админке? Так допишите админку или явно укажите в модуле, где ставить флеш, а где нет.
Вообще, вариант с htaccess не так уж и плох.
Пока нашел только один некрасивый эпизод - с навигацией Views.
На первую страницу заходим по ссылке ../katalog/ - тут все ок.
а вот дальше начинается ../katalog?page=1 , сервер выдаст ../katalog/?page=1, но исходящая была кривая.
ссылка вернуться на первую - /katalog (без слэша).
Как-то эту ситуацию можно выправить без больших хитростей?
>Почему нельзя настроить? Потому что нет в админке?
Там же вообще никаких настроек нет кроме галки включения модуля.
В идеале, конечно, нужно чтоб у него была функциональность, как у кода, выше из htaccess, тогда разнобоя не будет.
Может кому пригодиться как сделать исключение для модуля. Я не сразу догадался.
if ($options['external'] || $path == '<front>' || $path == '*.*' || empty($path)) {
return;
}