Для этого ответа я предполагаю, что вы готовы сделать mod_rewrite
для каждого субдомена. Я не думаю, что это будет работать для любого субдомена (то есть x
, о котором вы упомянули).
Это исключит ведущие /skill/
, так что ваше приложение продолжит работать:
RewriteCond %{HTTP_HOST} !www.example.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?skill.example.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (/skill/)?(.*) /skill/$2
Обновление
Хорошо, вы хотите удалить ведущую часть URL-адреса в самой ссылке.
По сути, это означает, что вы должны написать собственный тег для замены тега {% url%}, примерно так:
import re
from django.template import Library
from django.template.defaulttags import URLNode, url
register = Library()
class SubdomainURLNode(URLNode):
def render(self, context):
domain = context['request'].get_host()
subdomain = re.sub(r'^www\.','',domain).split('.')[0]
path = super(SubdomainURLNode, self).render(context)
return re.sub(r'^/%s/' % subdomain, '/', path)
@register.tag
def subdomainurl(parser, token, node_cls=SubdomainURLNode):
"""Just like {% url %} but checks for a subdomain."""
node_instance = url(parser, token)
return node_cls(view_name=node_instance.view_name,
args=node_instance.args,
kwargs=node_instance.kwargs,
asvar=node_instance.asvar)
Я проверил это на своем сервере, и похоже, что оно работает.