2013-12-03 3 views
1

У меня есть URL вроде следующего:Apache mod_rewrite URLs

http://www.domain.com/us/en/ 

, что я хотел бы перенаправить:

http://www.domain.com/en_US/ 

, что это самый простой способ для достижения этой цели?

спасибо.

Редактировать: Это было бы динамично для многих комбоязычных локаций.

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

http://www.domain.com/a/b/c/d 

To:

http://www.domain.com/d/c/b/a 
+0

Вы хотите прописные первый сегмент URI, как 'нас => США, uk => UK' и т. д. – anubhava

+0

да, это было бы идеально –

+0

Ну, что требует изменений в конфигурации сервера Apache? У вас есть контроль над этим? – anubhava

ответ

1

Добавьте эту строку в Apache конфигурации:

RewriteMap uppercase int:toupper 

и перезапустить сервер.

Затем добавьте это правило в файле DOCUMENT_ROOT/.htaccess:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]+)/([a-z]+)/?$ /$2_%{uppercase:$1}/ [L,R] 

Для http://www.domain.com/a/b/c/d To: http://www.domain.com/d/c/b/a

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$4/$3/$3/$1/ [L,R] 
+0

Так что вы говорите, что я могу использовать $ 1 $ 2 $ 3 для/a/b/c/в исходном URL-адресе и использовать их во втором URL-адресе, чтобы переупорядочить их, как я желаю? –

+0

для чего используется [L, R]? –

+1

да именно то, что он делает. Каждый '([^ /] +)' захватывает сегмент из исходного URI в '$ 1, $ 2, $ 3' и т. Д. – anubhava