Улучшение URL с использованием .htaccess - PullRequest
1 голос
/ 29 ноября 2010

в поисках более удобного для пользователя URL , как мне добиться того и другого, элегантно используя только .htaccess?

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

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

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

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

ОБНОВЛЕНИЕ, после предоставленного решения: 1. исключение / zh-CN / somepage должно быть доступно как / cn / somepage 2. Сгенерированные php миниатюры больше не загружаются, например:
img src = "imgcpu? src = someimage.jpg & w = 25 & h = 25 & c = f & f = bw"

Ответы [ 2 ]

3 голосов
/ 29 ноября 2010
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L]

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

Обновление: Если вы действительно хотите рассматривать 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 голосов
/ 29 ноября 2010

Я бы предложил следующее -

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.Язык должен иметь длину не более двух символов и содержать только символы от a до z.

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

...