Проверка определенной длины поддомена в htaccess с помощью регулярного выражения

#regex #apache #.htaccess #mod-rewrite #url-rewriting

#регулярное выражение #apache #.htaccess #модификация-перезапись #переписывание URL

Вопрос:

Я пытаюсь отфильтровать поддомен двухуровневого уровня для своего веб-сайта.

Форма выглядит следующим образом:

[страна].[категория].mywebsite.com ~ где страна состоит из 2 символов.

Я пытаюсь создать правило перезаписи для 3 перестановок:

 -[country].[category].mywebsite.com = mywebsite.com?country=mp;category=%2
-[category].mywebsite.com = mywebsite.com?category=%1
-[country].mywebsite.com = mywebsite.com?country=%1
  

Следующее, что у меня есть на данный момент.

 RewriteCond %{HTTP_HOST} !www.mywebsite.com$ [NC] # Presuming you don't want to do www
RewriteCond %{HTTP_HOST} ^(.*).(.*).mywebsite.com [NC] # Catch subdomain
RewriteCond %{REQUEST_URI} !.(?:jpe?g|png|gif|bmp|php)$ [NC]
RewriteRule ^(.*)$ index.php?country=mp;category_subs=%2 [QSA,L]
  

Я не уверен, есть ли какой-либо способ отфильтровать regex по длинам, чтобы я мог отфильтровать все 2 символа поддоменов из country.

Любая помощь или совет приветствуются. Спасибо.

Ответ №1:

Это может помочь вам начать (добавьте флаги и дополнительные условия по мере необходимости):

 RewriteCond %{HTTP_HOST} ^(ww).(w ).mywebsite.com [NC]
RewriteRule ^(.*)$ index.php?country=mp;category=%2

RewriteCond %{HTTP_HOST} ^(ww).mywebsite.com [NC]
RewriteRule ^(.*)$ index.php?country=%1

RewriteCond %{HTTP_HOST} ^(w ).mywebsite.com [NC] # Note: this will also rewrite the country URL if you don't [END] there
RewriteRule ^(.*)$ index.php?category=%1
  

Комментарии:

1. на моей стороне не работает. Первое правило уже отменено. print_r($_GET) возвращает пустой массив.