1

Я новичок в ISAPI_Rewrite & Я ужасен с регулярными выражениями. Мне нужно правило перезаписи для ISAPI_Rewrite, которое удалит субдомен и передаст его в качестве параметра. Например:Пропустить субдомен как параметр

mysubdomain.mydomain.com 

должен стать

mydomain.com/Landing.aspx?ID=mysubdomain 

Я нашел регулярное выражение, которое, кажется, соответствуют все поддомены, кроме www, но я не знаю, как передать то субдомен как как показано в примере выше.

^((?:(?!www).)*) 

Любая помощь будет принята с благодарностью.

Примечание: Я использую полную версию ISAPI_Rewrite, поэтому это правило будет находиться на уровне сайта.


Глобальное правило:

# Helicon ISAPI_Rewrite configuration file 
# Version 3.1.0.89 

#Disable extentionless processing for ASP.Net v 4.0 
RewriteRule (.*)eurl.axd/.* $1 

# Don't rewrite urls that are inside the assets folder or have the following extentions 
RewriteRule ((^/Assets/.*)|(.*\.axd.*)|(.*\.asmx.*)|(.*\.png.*)) $1 [NC,L] 

#Rewrite URL, pass last portion of URL to Landing.aspx + purl 
RewriteRule (.*) $2/landing.aspx\?id=$1 [NC] 

ответ

1

Нечто подобное может работать для вас:

# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} ^$ 
RewriteCond %{HTTP_HOST} ([^.]+)(?<!^www)(\.|$) [NC] 
RewriteRule^Landing.aspx?ID=%1 [L,QSA] 

PS: Похоже, ваше глобальное правило, находится в конфликте с вышеприведенным правилом рудника. Поэтому я хотел бы предложить вам, чтобы ваше глобальное правило так, чтобы избежать конфликта:

RewriteCond %{QUERY_STRING} ^$ 
RewriteCond %{HTTP_HOST} !mydomain\.com$ [NC] 
RewriteRule ^(.*)$ landing.aspx?id=$1 [L] 
0

Попробуйте следующее:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP:Host} !^www\.mydomain\.com$ 
RewriteCond %{HTTP:Host} ^([^.]+)\.mydomain\.com$ 
RewriteRule ^$ /Landing.aspx?ID=%1 [NC,L] 

Вы не указали, если вы хотите 301-редирект или перезапись, поэтому, если вы хотите, чтобы он был перенаправлен, используйте [NC, R = 301, L] вместо [NC, L].

+0

Я получаю 'id = /' только в querystring. –

+0

Что это за конструкция? – Andrew

+0

Вы можете добавить следующие строки в httpd.conf, чтобы включить ведение журнала и посмотрим на то, как обрабатывается запрос: #enabling rewrite.log RewriteLogLevel 9 #enabling Error.log LogLevel отлаживать – Andrew

Смежные вопросы