Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多语言django cms网站:seo友好主页(重定向)_Django_Redirect_Django Cms_Multilingual - Fatal编程技术网

多语言django cms网站:seo友好主页(重定向)

多语言django cms网站:seo友好主页(重定向),django,redirect,django-cms,multilingual,Django,Redirect,Django Cms,Multilingual,注意/编辑:如我所知,默认行为是ok SEO明智的(允许一个重定向…多个重定向是不好的)。所以这有点过头了。 如果我的django cms站点是多语言的,访问domain.com总是重定向到domain.com/default language/ 有没有更好的方法/方案来消除这种行为 我想要它的原因主要是因为搜索引擎优化。最佳解决方案是: domain.com=>无重定向 domain.com/default lang/=>重定向回domain.com domain.com/other lang

注意/编辑:如我所知,默认行为是ok SEO明智的(允许一个重定向…多个重定向是不好的)。所以这有点过头了。

如果我的django cms站点是多语言的,访问
domain.com
总是重定向到
domain.com/default language/

有没有更好的方法/方案来消除这种行为

我想要它的原因主要是因为搜索引擎优化。最佳解决方案是:
domain.com
=>无重定向
domain.com/default lang/
=>重定向回
domain.com

domain.com/other lang/
=>保持原样,因为有翻译的内容

示例:
http://www.parkhotel-bellevue.ch/
重定向到
http://www.parkhotel-bellevue.ch/de/
,这是我不想要的。现在正确吗


注意:这个问题是关于django cms的,不仅仅是django。

如果你把你的
索引
url放在根配置中,而把所有其他页面放在
i18n_模式下会怎么样

urlpatterns = [
    url(r'^$', Index.as_view(), name='index'),
]

urlpatterns += i18n_patterns('',
    url(r'^', include('cms.urls')),
)
这样,您的根URL就不会重定向到特定于语言的URL

对于问题的第二部分,您可以尝试以下解决方案:

  • 如果您有一组有限的固定语言,您可以在Web服务器conf(或django URL)上硬编码重定向
  • 如果您不想硬编码这些重定向,也可以在
    i18n_模式中包含
    索引
    视图
比如:

# views.py
class Index(View):
    def dispatch(self, request, *args, **kwargs):
        if request.path != '/':
            return redirect('/')
        return super().dispatch(request, *args, **kwargs)

# urls.py
urlpatterns = [
    url(r'^$', Index.as_view(), name='index'),
]

urlpatterns += i18n_patterns('',
    url(r'^$', Index.as_view(), name='index'),
    url(r'^', include('cms.urls')),
)
编辑:

另一个选择是使用您自己的
localemidware
,将django中的一个子类化。
重定向部分似乎发生在这里:

如果您想删除url中的多语言标识符,并且只想使用单一语言,请参阅我的网站是多语言的。它只涉及主页,即没有任何更多的slug/address部分。我可以将cms.url放在i18n_模式中,也可以不放在i18n_模式中:。我想知道的是:重定向是django制作的,还是django cms的一个“特性”?我认为重定向是django制作的。其行为似乎是:当一个URL被请求并且没有前缀语言代码时,我们用语言代码重定向到同一个URL。thx!必须为djangos LocaleMiddleware创建子类。会让你知道它什么时候起作用!在对LocalEmidware进行子类化并在那里处理重定向之后,仍然存在一些问题。例如,使用标准cms详细信息视图,使用默认语言呈现主页。但是很容易;-)你的回答没有完全回答我的问题,但肯定把我推向了正确的方向!