Apache и mod_rewrite: Перенаправьте домен к подкаталогу

Я создал миксины для этого сейчас и

class ChangeFieldNamesMixin(models.Model):

def __init__(self, *args, **kwargs):
    model_fields = self._meta.get_fields()
    initialise_texts(self._meta.model_name, model_fields)
    super(ChangeFieldNamesMixin, self).__init__(*args, **kwargs)

class Meta:
    abstract = Trueenter code here

def initialise_texts(name, model_fields):
model_field_name = name + 'Field'
Model = apps.get_model("custom", model_field_name)
field_names_to_create = []
field_dict = compose_field_dict(name, Model)

# create entries in table if empty
if len(field_dict) == 0:
    for entry in model_fields:
        if entry.editable:
            attrs = {'name': entry.name, 'help_text': entry.help_text, 'label': entry.verbose_name}
            new_entry = Model(**attrs)
            field_names_to_create.append(new_entry)

            print('Saving {}'.format(new_entry))
    field_list = Model.objects.bulk_create(field_names_to_create)
    compose_field_dict(name, Model, field_list)
else:

    for entry in model_fields:
        if entry.editable:
            key = entry.name

            if key in field_dict.keys():
                setattr(entry, 'verbose_name', field_dict[key].label)
                setattr(entry, 'help_text', field_dict[key].help_text)

Я не слишком рад этому решению, потому что я думаю, что должен быть лучший способ инициализировать поля в базе данных. Я довольно новичок в разработке django и python (более опытный в Java), поэтому некоторые отзывы будут оценены.

5
задан ObiWanKenobi 22 April 2009 в 06:00
поделиться

3 ответа

Я не верю, что вам нужно использовать mod_rewrite, вы должны быть в состоянии использовать vhosts для этого, как вы предлагаете. Для этого у вас будет один vhost с именем_сервера domain2.example, который указывает на каталог, который вы хотите. При этом также будет использоваться директива ServerAlias ​​для domain1.example, поэтому запросы на это отправляются в тот же каталог.

См. Документацию для ServerAlias ​​ и DocumentRoot . Также обратите внимание, что если вы хотите, чтобы каталог отображался в URL, вам потребуется использовать mod_rewrite.

2
ответ дан 13 December 2019 в 19:35
поделиться

При условии, что домены независимы, рекомендуемое решение - виртуальные хосты.

Документацию можно найти на веб-сайте Apache .

3
ответ дан 13 December 2019 в 19:35
поделиться

Я предполагаю, что у вас нет доступа к конфигурации Apache, иначе да, виртуальные хосты - ваш лучший вариант. Однако, если вы этого не сделаете, это может быть помещено в файл .htaccess и должно помочь:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.+)\.yourwebsite\.com$
RewriteRule ^/(.*)$ /path/to/your/subdomains/%1/$1 [L]

Поэтому запрос к http://foo.yourwebsite.com/bar будет / path / to / your / subdomains / foo / bar

6
ответ дан 13 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

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