2010-11-28 4 views
1

в поисках более userfriendly URL, как я могу достичь обоих следующих, элегантно используя только .htaccess?URL Beautification using .htaccess

/де/somepage
собирается /somepage?ln=de

/ZH-CN/somepage # 7
собирается /somepage?ln=zh-CN#7

Резюме:
/[язык]/[pagefilenameWithoutExtension ] [дополнительный якорь #] [число от 0 до 9]

должен загрузить (без изменения URL)
/[pagefilenameWithoutExtension] п = [язык] [опционально якорь #] [число от 0-9]

ОБНОВЛЕНИЕ, после того, как предусмотрено решение: 1. исключением/ZH-CN/somepage должен быть доступен в/сп/somepage 2. PHP генерируется эскизы Теперь Dont загрузить больше, как:
IMG SRC = "imgcpu SRC = someimage.jpg & ш = 25 ч = & 25 с = & f & f = bw "

+0

Имейте в виду, что вы не будете получать составляющую, что # 7 URL в вашем скрипте. Раздел URI после хэша является только элементом клиентской стороны и не передается серверной стороне. – Orbling 2010-11-29 00:13:39

ответ

3
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L] 

Вам не нужно делать что-либо для фрагментов (например: #7). Они не отправляются на сервер. Они полностью обрабатываются браузером.

Update: Если вы действительно хотите лечить ZH-CN, как частный случай, вы могли бы сделать что-то вроде:

RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L] 
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L] 
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L] 
0

Я бы зарекомендовал себя Следующие:

RewriteEngine on 
RewriteRule ^([a-z][a-z])/([a-zA-Z]+) /$2?ln=$1 
RewriteRule ^([a-z][a-z])/([a-zA-Z]+#([0-9])+) /$2?ln=$1$3 

Первое правило касается URL-адресов, таких как/de/somepage. Язык должен иметь ровно два символа длиной и должен содержать только символы от z до z.

Второе правило касается URL-адресов, таких как/uk/somepage # 7.

+0

Обратите внимание, что вам не нужна часть хэша (#), которая является только функцией URI на стороне клиента и никогда не отправляется на сервер. – Orbling 2010-11-29 00:12:53

+0

Два героя в течение часа. Почему я не могу поставить V на оба имени, так как оба ваши ответы верны! – Sam 2010-11-29 00:16:51

Смежные вопросы