首页 > 解决方案 > 来自其他域的 Django 重定向给出了“找不到页面”错误

问题描述

单击指向我的 Django 网站的 url 时,我收到一个 Page Not Found 错误。当我查看 DEBUG=True 的错误时,我发现错误消息中显示的“当前路径”与实际 url 不同。

例如,查看linkedin 上的共享文章:https ://www.linkedin.com/company/huvepharma-nv/ 。单击第一篇文章时,我被重定向到我的 Django 网站:https ://huvepharma.com/news/article/how-butyrate-produce-bacteria-can-support-food-safety/ 。这给了我一个 Page Not Found 错误,说当前路径是company/huvepharma-nv/,这是 LinkedIn 网站上的路径。

在此处输入图像描述

我怎样才能解决这个问题?

我在过去添加了以下修复,但现在我得到了 DEBUG=False 的 ERR_TOO_MANY_REDIRECTS。因此,快速修复也不再起作用。

def handler404(request, exception, template_name='errorhandlers/handler404.html', *args, **kwargs):
    if request.META.get('HTTP_SEC_FETCH_SITE') == 'cross-site':
        return redirect(request.path)

    response = render_to_response(template_name)
    response.status_code = 404
    return response

Apache2 配置:

端口 80:

<VirtualHost *:80>
        ServerAdmin frederik@adbuddy.be
        ServerName huvepharma.com
        ServerAlias www.huvepharma.com

        ErrorLog "||/usr/bin/rotatelogs /home/ubuntu/websites/huvepharma/logs/error/error-%Y-%m-%d.log 86400"
        CustomLog "||/usr/bin/rotatelogs /home/ubuntu/websites/huvepharma/logs/access/access-%Y-%m-%d.log 86400" combined

        Alias /static /home/ubuntu/websites/huvepharma/static
        <Directory /home/ubuntu/websites/huvepharma/static>
                Require all granted
        </Directory>

        Alias /media /home/ubuntu/websites/huvepharma/media
        <Directory /home/ubuntu/websites/huvepharma/media>
                Require all granted
        </Directory>

        #WSGIDaemonProcess huvepharma.com python-home=/home/ubuntu/websites/huvepharma/venv python-path=/home/ubuntu/websites/huvepharma
        #WSGIProcessGroup huvepharma.com
        #WSGIScriptAlias / /home/ubuntu/websites/huvepharma/huvepharma/wsgi.py process-group=huvepharma.com

        <Directory /home/ubuntu/websites/huvepharma/huvepharma>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =huvepharma.com [OR]
RewriteCond %{SERVER_NAME} =www.huvepharma.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

端口 443:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin frederik@adbuddy.be
        ServerName huvepharma.com
        ServerAlias www.huvepharma.com

        ErrorLog "||/usr/bin/rotatelogs /home/ubuntu/websites/huvepharma/logs/error/error-%Y-%m-%d.log 86400"
        CustomLog "||/usr/bin/rotatelogs /home/ubuntu/websites/huvepharma/logs/access/access-%Y-%m-%d.log 86400" combined

        Alias /static /home/ubuntu/websites/huvepharma/static
        <Directory /home/ubuntu/websites/huvepharma/static>
                Require all granted
        </Directory>

        Alias /media /home/ubuntu/websites/huvepharma/media
        <Directory /home/ubuntu/websites/huvepharma/media>
                Require all granted
        </Directory>

        WSGIDaemonProcess huvepharma.com python-home=/home/ubuntu/websites/huvepharma/venv python-path=/home/ubuntu/websites/huvepharma
        WSGIProcessGroup huvepharma.com
        WSGIScriptAlias / /home/ubuntu/websites/huvepharma/huvepharma/wsgi.py process-group=huvepharma.com

        <Directory /home/ubuntu/websites/huvepharma/huvepharma>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/huvepharma.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/huvepharma.com/privkey.pem
</VirtualHost>
</IfModule>

标签: pythondjangolinkedinreferrer

解决方案


推荐阅读