Как использовать правило записи?
Мне нужно перенаправить
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
.