#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) возвращает пустой массив.