【问题标题】:Django redirect 301 for www SubdomainDjango为www子域重定向301
【发布时间】:2016-01-15 14:07:23
【问题描述】:

我的 Django 应用程序使用 Apache 和 mod_wsgi 托管。在我想创建一个从没有“www”到“www”的 301 重定向之前,它工作得很好。我更改了 .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L] 

现在它总是从 www.example.com 重定向到:

http://www.example.com/index.wsgi/index.wsgi/ 

我得到一个找不到页面的错误。我做错了什么?我该如何解决这个问题?

【问题讨论】:

    标签: python django .htaccess redirect mod-wsgi


    【解决方案1】:

    当您在一个域中使用重定向时, 你可以得到类似无限循环的东西。

    例如,例如,您的请求第一次就可以正常工作。 但是重定向后 RewriteCond 将再次检查当前主机 == 您的主机。 这是真的,因此您的请求将添加您在之前的请求中收到的所有内容。

    为防止这种情况,您可以使用以下内容:

    RewriteCond %{ENV:REDIRECT_FINISH} !^$
    RewriteRule ^ - [L]
    RewriteCond %{HTTP_HOST} ^example.com$ [NC]
    RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L,E=FINISH:1]
    

    前两行帮助您防止无限循环。

    【讨论】:

    • 感谢您的回答,但这不起作用。有没有办法像我从不编辑 .htaccess 一样取消重定向?
    • 究竟是什么不起作用?这条规则不会重定向你吗?
    • 总是从 example.com 和 www.example.com 重定向到 www.example.com/index.wsgi/index.wsgi/
    • 你那里还有其他的.htaccess吗?
    • 是的,一个在主文件夹中,另一个在我的 django app 文件夹中。
    猜你喜欢
    • 2013-12-21
    • 2011-04-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    相关资源
    最近更新 更多