Как перенаправить с помощью .htaccess динамический вложенный URL

Как перенаправить с помощью .htaccess динамический вложенный URL

Как использовать правило записи?

Мне нужно перенаправить

www.example.com/accesories

к

www.example.com/accesories/item

ОБНОВЛЯТЬ:Если я использую, Redirect /accesories /accesories/itemsя получаю:

www.example.com//accesories/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/

решение1

Redirect /accesories /accesories/items

Да, это приведет к циклу перенаправления, поскольку Redirectдиректива mod_alias является префикс-сопоставляемой, согласнодокументы Apache(выделю свой):

...Любой запросначиная сURL-path вернет клиенту запрос на перенаправление по адресу целевого URL.К целевому URL-адресу будет добавлена ​​дополнительная информация о пути, выходящая за рамки сопоставленного URL-пути.

Если вы хотите перенаправить только этот конкретный URL, вам нужно будет использовать RedirectMatchдирективу*1вместо этого, это соответствует регулярному выражению. Например:

RedirectMatch ^/accesories$ /accesories/items

*1Если только вы уже не используете mod_rewrite в других директивах (именно поэтому я и спросил «Какие еще директивы у вас есть?»), в таком случае может быть предпочтительнее использовать вместо него mod_rewrite.

"динамический" - потому что аксессуары - это категория с продуктами, но я не хочу показывать какие-либо продукты, нужно перенаправить на /аксессуары/предметы

Я не совсем уверен, что вы имеете в виду, но если нужно перенаправить /accesories/<products>на /accesories/items, где <products>может быть любой отдельный сегмент пути, за исключением itemsтогда вам нужно будет сделать что-то вроде следующего, используя отрицательный просмотр вперед в RedirectMatchдирективе (или использовать mod_rewrite). Например:

RedirectMatch ^/accesories(/(?!items)[^/]*)?$ /accesories/items

Вышеприведенный код перенаправляет /accesories, /accesories/и /accesories/<anything>, но не /accesories/items(так как это создало бы цикл перенаправлений) на /accesories/items.

Обратите внимание, что это 302 (временные) перенаправления. (Всегда проверяйте с 302, чтобы избежать потенциальных проблем с кэшированием, и меняйте на 301 только позже, если это действительно так.)

Порядок директив .htaccessможет быть важен. Внешние перенаправления обычно должны располагаться в верхней части файла .htaccess.

Связанный контент