Как я могу переписать плоскую ссылку на динамическую ссылку и сохранить строку запроса? - PullRequest
0 голосов
/ 28 апреля 2010

Я хочу переписать URL-адрес, например:
http://my.project/mydomain.com/ANY_NUMBER_OF_CATEGORIES/designer/4/designer-name/page.html
на это:
http://my.projects/mydomain.com/ANY_NUMBER_OF_CATEGORIES/page.html?designer=4

Я бы хотел использовать mod-rewrite для достижения этой цели.

На что обратить внимание:

  1. Любое количество категорий может быть между «mydomain.com/» и «/ designer».
    1. Например, URL может быть http://my.project/mydomain.com/designer/4/designer-name/page.html или http://my.project/mydomain.com/tops/shirts/small/designer/4/designer-name/page.html
  2. Строка запроса может быть предоставлена ​​в исходном URL, который должен быть сохранен в переписанном URL.
    1. Например, предоставленный URL может быть: http://my.project/mydomain.com/designer/4/designer-name/page.html?color=red&type=shirt
    2. Учитывая, что URL выше полученного URL должен быть: http://my.projects/mydomain.com/page.html?designer=4&color=red&type=shirt
    3. Порядок строки запроса не имеет значения. Часть 'designer = 4' может находиться до или после остальной части строки запроса.

Я новичок в .htaccess и переписываю, поэтому любые примеры и / или объяснения будут с благодарностью. Большое спасибо.

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

Попробуйте это в своем файле .htaccess:

RewriteEngine on
RewriteRule ^(.+/)?(\d+)/[^/]+/([^/]+\.html)$ $1$3?designer=$2 [L,QSA]
0 голосов
/ 05 мая 2010

Мне пришлось создать два отдельных RewriteRules:

RewriteRule ^designer/([^/]+)/.*/([^/]+)\.html $2.html?designer=$1 [NC,L,QSA]
RewriteRule (.*)/designer/([^/]+)/.*/([^/]+)\.html $1/$3.html?designer=$2 [NC,L,QSA]

Спасибо Гамбо за то, что он указал на часть [QSA] переписанного текста.

...