@lilikon

Как через htaccess перенаправить субдомен на одну страницу?

Есть сайт: site.ru
Есть субдомен для этого сайта: sub.site.ru
Есть страницы: index.php, sub.php

htaccess для основного сайта настроен так (работает как надо):

RewriteRule ^status/([^/]+)/?$ index.php?action=weekly&status=$1 [L]
RewriteRule ^status/?$ index.php?action=weekly [L]

При вводе site.ru/status/ - открывает то же самое что и site.ru/index.php?action=weekly
При вводе site.ru/status/1/ - открывает то же самое что и site.ru/index.php?action=weekly&status=1
Эта часть работает отлично!

Задача надо на субдомен подключить ОДНУ страницу - sub.php
Что должно получиться:
sub.site.ru - открывает то же само что и site.ru/sub.php?action=weekly
sub.site.ru/1/ - открывает то же само что и site.ru/sub.php?action=weekly&status=1

Можно ли такое реализовать?
Если да то прошу помощи у Вас.

Что я пробовал:

RewriteCond %{HTTP_HOST} ^sub\.([^/]+)\.ru/? [NC]
RewriteRule ^(.*)/([^/]+)/?$ sub.php?action=weekly&status=$1 [L]
RewriteRule ^(.*)/?$ sub.php?action=weekly [L]


Когда захожу на sub.site.ru - открывает sub.php?action=weekly (правильно, работает)
НО когда я пытаюсь зайти на sub.site.ru/1/ - открывает что и до sub.php?action=weekly, а должна открыть sub.php?action=weekly&status=1
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
shambler81
@shambler81 Куратор тега htaccess
ну для начала немного теории
?- и далее это GET паравметр он не является частью RequestURI а как следствие не виден им вообще, п оэтому редиректы с использованием GET параметров нужно делать по другому, да и в добавок экранируйте спец символы, они на это и есть
\?
\/=

умереть они от этого не умрут точно.
Третье, вы пытаетесь написать ЧПУ - рекомендую не придумывать велосипед а использовать именно его.
НУ и давайте разберемся .

RewriteCond %{HTTP_HOST} ^(www\.|)sub\.(.+) [NC]
#Если хост www.sub или sub.и далее хотябы один символ, плюс все регистронезависимое
RewriteRule ^(.*)$ http://sub.php\?action\=weekly\&status\=$1? [L]
#то выделяем все что там после домена в группу1 и не забывая экранировать спецсимволы подставляем в урл, плюс в конце стоит вопрос, это блядство удалит гет параметры   выставленные до этого ;)


Если вам нужно использовать GET параметр в этом урле то
Поймать его можно будет уже через
RewriteCond %{QUERY_STRING} (^|&)(faq\=13)($|&)
Собрать его так же в группу ну и подставить ее в рул но уже не $2 а %2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы