Url Beautification с использованием .htaccess
-
29-09-2019 - |
Вопрос
в поисках более Userress url, Как мне достичь обоих следующих, элегантно используя только .htaccess?
/ de / handpage
собираться /somepage?ln=de
/ ZH-CN / WACKAGE # 7
собираться /somepage?ln=zh-CN#7
резюме:
/ [Язык] / [PAREFILENAMEWithOutextension] [Необязательный якорь #] [номер от 0 до 9
должен загрузить (без изменения URL)
/ [PARYFILENAMEWithOutextension]? ln = [язык] [необязательный якорь #] [номер от 0 до 9
Обновление, после обеспечения предусмотренного решение: 1. Исключение / ZH-CN / WEDSAGE ДОЛЖЕН БЫТЬ ДОСТУПИТЕЛЬНО AS / CN / CNAGE 2. PHP сгенерированные миниатюры теперь не загружаются как:
img src = "imgcpu? src = umyimage.jpg & w = 25 & h = 25 & c = f & f = bw"
Решение
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]
Другие советы
Я бы предположил следующее -
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 / dewAge. Язык должен иметь ровно две символы длины и должен содержать только символы A до Z.
Второе правило позаботится о URL-адресах вроде / Великобритании / WordSage # 7.