2014-09-24 2 views

ответ

0

Есть несколько способов вы можете решить это, самый простой, вероятно, полностью с правилами mod_rewrite. Вы можете делать все, что вы хотите сделать с двумя правилами перезаписей:

  1. перенаправлять все запросы с подчеркиванием тиром
  2. переписывать все запросы с тиром назад, чтобы подчеркнуть для внутреннего интерфейса (Кохана) легко обрабатывать.

Я не проверял это, но я думаю, что это должно работать:

# redirect all requests with underscore to dash (this will do three dashes at a time, hopefully results in only one redirect for the client) 
RewriteCond %{REQUEST_URI} ([^_]*)_([^_]*) 
RewriteCond %1-%3 ([^_]*)(_([^_]*))? 
RewriteCond %1-%3 ([^_]*)(_([^_]*))? 
RewriteCond %1-%3 ([^_]*)-*$ 
RewriteRule .* %1 [L,R=301,QSA] 

# rewrite all requests with dash back to underscore 
RewriteCond %{REQUEST_URI} ([^-]*)-([^-]*) 
RewriteCond %1_%3 ([^-]*)(-([^-]*))? 
RewriteCond %1_%3 ([^-]*)(-([^-]*))? 
RewriteCond %1_%3 ([^-]*)_*$ 
RewriteRule .* %1 [L]