如何在URL中的任何位置重定向所有包含PHP
的请求?
我有这个功能来重定向以.php
结尾的所有内容
url(r'^(?P<path>.*)\.php$',
RedirectView.as_view(
url='http://www.php.net/', permanent=True)),
现在,我想在URL中的任何位置捕获并重定向所有包含关键字php
的URL请求,即使没有点.
之类的blah/php/blah
或blahPHPblah
等也是如此。
类似这样的东西:
url(r'^(?P<path>php*)',
RedirectView.as_view(
url='http://blah.com/', permanent=True)),
如果.htaccess规则将是更好的解决方案,那么我也愿意接受!
答案 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
中注册。