Я хотел бы преобразовать свои URL в короткие без параметров get, но с первой попытки я бы сократил регулярное выражение до одного случая:
Есть много нормальных URL, которые не должны быть затронуты. Единственный случай, когда я хочу переписать URL-адреса, это страница профиля пользователя.
В настоящее время они выглядят так:
www.dummy.com/index.php?user=USERNAME&id=USERID
Целевая схема выглядит так:
www.dummy.com/USERNAME/USERID
Имена пользователей могут содержать в основном любой символ (без /), а не только a-z / A-Z.
Я никогда не был хорош в регулярных выражениях и понятия не имею, как справиться с этой проблемой. Любые предложения приветствуются.
Не будет запросов к папке (www.dummy.com/folder/subfolder), но подтверждать, что идентификатор пользователя является целочисленным значением, было бы неплохо, но не обязательно.
Вы можете использовать этот код в своем DOCUMENT_ROOT/.htaccess
файл:
RewriteEngine On
RewriteBase /
RewriteRule ^(\w+)/(\d+)/?$ index.php?user=$1&id=$2 [L,QSA]
Это будет соответствовать одному из следующих URL:
/abcd/123
/abcd/123/
/abcd456/6789
/abcd456/6789/
РЕДАКТИРОВАТЬ:
В LigthHttpd используйте это эквивалентное правило:
url.rewrite = ( "^/(\w+)/(\d+)/?(?:\?(.*))?$" => "/index.php?user=$1&id=$2&$3" )
Других решений пока нет …