Django URL重定向所有PHP请求

时间:2018-12-24 15:28:42

标签: php python django .htaccess redirect

如何在URL中的任何位置重定向所有包含PHP的请求?

我有这个功能来重定向以.php结尾的所有内容

url(r'^(?P<path>.*)\.php$', 
    RedirectView.as_view(
        url='http://www.php.net/', permanent=True)),

现在,我想在URL中的任何位置捕获并重定向所有包含关键字php的URL请求,即使没有点.之类的blah/php/blahblahPHPblah等也是如此。

类似这样的东西:

url(r'^(?P<path>php*)', 
    RedirectView.as_view(
        url='http://blah.com/', permanent=True)),

如果.htaccess规则将是更好的解决方案,那么我也愿意接受!

1 个答案:

答案 0 :(得分:1)

一种解决方案是使用重定向中间件:

from django.shortcuts import redirect


class PHPRedirectMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        # One-time configuration and initialization.

    def __call__(self, request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        if ".php" in request.get_raw_uri():
            return redirect(to="http://www.example.com")

        response = self.get_response(request)

        # Code to be executed for each request/response after
        # the view is called.

        return response

您必须在settings.py列表中的MIDDLEWARE中注册。