Ваш .htaccess беспорядочный из-за простых вещей:
Правило № 1: избегайте смешивания директив Redirect
и RewriteRules
.Это только запутает вещи. всегда есть возможность заменить Redirect
директивами RewriteRules
.
Правило № 2: , если вам не нужен RewriteBase /
(что частодело, потому что база часто /
), не пишите это.Это только запутает вещи.Чем короче, тем лучше (это то, что она говорит мне (просто шучу)).
Правило № 3: : ^(.*)$
совпадает с (.*)
,Здесь также все проясняется.
Правило № 4: : специальное правило для вас: вы можете уменьшить на 2 почти все ваши RewriteRules, используя такую вещь, как ^downloading/([^/]*)(/([^/]*))?/
, которая делает второеАргумент пуст, но соответствует одному или двум аргументам (только в вашем Php вы можете получить пустой второй аргумент).Чем короче, тем лучше.
Тогда, чтобы ответить на ваш вопрос: перенаправить: http://example.com/category-name/item-name/ на этот http://example.com/download-item-name/
RewriteRule ^category-([a-zA-Z]+)/item-([a-zA-Z]+)/ ^download-item-$2/ [QSA,R]
Это должно работать
Мой любимый инструмент для проверки регулярных выражений:
http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)