Проблема:
Я крутил мои колеса и некоторое время читал об этом, и теперь ищу помощи.Я собираюсь взять группу недружественных URL-адресов (на самом деле есть больше «групп», но это должен быть для примера):
- domainname.com /? Section = zebras
- domainname.com /? Section = monkeys & id = 555
и превратить их в удобные URL-адреса, а также сделать 301 на старых версиях, чтобы любые старые закладки (и поисковые системы)все равно разрешит их.Мне нужен новый формат:
- domainname.com / zebras /
- domainname.com / monkeys / 555
I 'Я полностью намереваюсь написать отдельные комбинации RewriteCond / RewriteRule для каждого из этих сценариев, поэтому мне не обязательно нужно супер-правило, которое перехватывает все мои сценарии.О, и это все в .htaccess.
My Progress:
Я изначально попадал в цикл перенаправления, потому что я просто делал два RewriteRule вплотную - одиндля дружественного URL и один для перенаправления 301.Наткнулся на мой любимый способ (пока что) по циклу перенаправления, который работает (по крайней мере, для моего сценария № 1):
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING} ^section=zebras$ [NC]
RewriteRule ^.*$ http://www.domainname.com/zebras/? [R=301,NC,L]
RewriteRule ^zebras/$ /index\.php?section=zebras [NC,L]
Однако я хотел бы иметь что-то, что работает больше, чем просто "зебры "(например, я хотел бы, чтобы это работало и для" львов "), поэтому я пытаюсь сделать это более общим.То, что я сейчас пытаюсь, выглядит так:
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING} ^section=([a-z]+)$ [NC]
RewriteRule ^section=([a-z]+)$ http://www.domainname.com/$1/? [R=301,NC,L]
RewriteRule ^([a-z]+)/$ /index\.php?section=$1 [NC,L]
Однако это не работает.Я думаю, что у меня есть что-то "не совсем правильное", я просто не могу сказать, что это такое - что-то я пропускаю или неправильно форматирую где-то.Заранее извините за длинное описание, просто хотел быть понятным.