مطابقة المجالات مع regex لـ lighttpd mod_evhost (www.domain.com / domain.com / sub.domain.com)

StackOverflow https://stackoverflow.com/questions/261904

  •  06-07-2019
  •  | 
  •  

سؤال

أنا ألعب مع com.lighttpd على خادم خاص افتراضي صغير.I مجالين يشيران إلى الخادم.أنا أستخدم أحدث إصدار من lighttpd وmod_evhost على Ubuntu 8.10.

  1. أحاول وضع قاعدة بحيث إذا طلب أي شخص domain.com أو www.domain.com يحصلون على الخدمة من /webroot/domain.com/www/

  2. وبالمثل، إذا طلب أي شخص sub.domain.com يحصلون على الخدمة من /webroot/domain.com/sub/

  3. إذا طلب الناس fake.domain.com (أين /webroot/domain.com/fake/ غير موجود) أرغب في خدمتهم من /webroot/domain.com/www/

المتطلب الثالث ليس مهمًا جدًا، يمكنني التعامل مع الأشخاص الذين يطلبون نطاقات فرعية غير موجودة يتم تقديمها من جذر مستند الخادم /webroot/server.com/www/ حتى لو طلبوا fake.domain.com

لقد قمت بتضمين الأجزاء ذات الصلة من ملف lighttpd.conf الخاص بي أدناه:

server.document-root = "/webroot/server.com/www/"

// regex to match sub.domain.com
$HTTP["host"] =~ "\b[a-zA-Z]\w*\.\b[a-zA-Z]\w*\.\b[a-zA-Z]\w*" {
    evhost.path-pattern = "/webroot/%0/%3/"    
}

// regex to match domain.com    
$HTTP["host"] =~ "\b[a-zA-Z]\w*\.\b[a-zA-Z]\w*" {
    evhost.path-pattern = "/webroot/%0/www/"    
}

إذن أين أخطأ؟في هذه اللحظة، جميع الطلبات ل *.domain.com و domain.com يتم خدمتهم من /webroot/domain.com/www/

سأكون ممتنًا لأي مساعدة يمكن أن تقدمها يا رفاق، وإذا تركت أي شيء ذي صلة، فيرجى إخباري!

هتافات ، روب

هل كانت مفيدة؟

المحلول

يبدو أن التعابير الخاصة بك مبالغ فيها بعض الشيء.

هنا ما سأستخدمه:

// regex to match sub.domain.com
$HTTP["host"] =~ "^[^.]+\.[^.]+\.[^.]+$" {
    evhost.path-pattern = "/webroot/%0/%3/"    
}

// regex to match domain.com    
$HTTP["host"] =~ "^[^.]+\.[^.]+$" {
    evhost.path-pattern = "/webroot/%0/www/"    
}

أين:

[^.]+ matches anything but a dot, 1..n times

لمطابقة النطاقات الفرعية الصالحة فقط مع الرجوع إلى "www"، يمكنك استخدام هذا:

// default: route everything to "www"
$HTTP["host"] =~ "([^.]+\.)?domain\.com$" {
    evhost.path-pattern = "/webroot/%0/www/"
}

// specific regex overwrites "path-pattern" for valid sub-domains only
$HTTP["host"] =~ "^(valid1|valid2|sub)\.domain\.com$" {
    evhost.path-pattern = "/webroot/%0/%3/"    
}

نصائح أخرى

لأول واحد, مطابقة domain.com و www.domain.com: ^\b([wW]{3}\.)?[\w\d]*\.com\b$, ، وبالنسبة للثاني، لست متأكدًا مما إذا كان التعبير العادي يمكنه تحديد ما إذا كان المجال الفرعي/الصفحة موجودًا، كما هو الحال لتحديد سلاسل النص محل الاهتمام.نأمل أن يساعدك ذلك قليلاً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top