Назад | Перейти на главную страницу

mod_rewrite: перезапись URL-адреса плюс перезапись поддомена (подстановочного знака) одновременно

У меня есть два правила в моем файле .htaccess для перезаписи URL:

  1. для перезаписи поддомена: xxx.domain.com внутренне перенаправляется на file.php? item = xxx

    RewriteCond% {HTTP_HOST}! ^ Www.domain.com $ [NC]

    RewriteCond% {HTTP_HOST} ^ (www.)? ([^.] +). Domain.com $ [NC]

    RewriteRule ^ $ /file.php?item=%2 [QSA, nc]

    2. обычная перезапись:

    RewriteRule ^ ([A-Za-z0-9 _) (:! - ',] +) /? $ File.php? Item = $ 1 [L]

Что мне нужно достичь, так это написать третье правило, которое объединит эти два правила, не вступая с ними в конфликт. А именно, ниже (или выше) этих строк мне нужно что-то вроде этого

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com/([A-Za-z0-9_)(:!-',]+)$ [NC]

RewriteRule ^$ /anotherfile.php?item1=%2&item2=$1 [QSA,nc]

так что http://xxx.domain.com/yyy будет перенаправлен на другой файл.php? item1 = xxx & item2 = yyy

какие идеи будут работать, или как это правильно?

Возможно, вы близки, но HTTP_HOST содержит только имя хоста (я думаю), а не URI, который находится в REQUEST_URI. Объединение этих двух вещей должно дать вам то, что вы хотите:

RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^.....$