Search engines might conclude there's duplicate content if /some_view/ and /some_view/?page=1 returns the same results. This middleware redirects ?page=1 to the URL without the page parameter. You can set the name of the parameter in settings.py as PAGE_VAR.
See here for more details.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from django.http import HttpResponsePermanentRedirect
from django.conf import settings
PAGE_VAR = getattr(settings, 'PAGE_VAR', 'page')
class FixFirstPaginatedPage(object):
def process_request(self, request):
if request.method == 'GET':
try:
page = int(request.GET[PAGE_VAR])
except (KeyError, ValueError, TypeError):
return None
if page == 1:
params = request.GET.copy()
del(params[PAGE_VAR])
path = request.path
if params:
path += '?' + params.urlencode()
return HttpResponsePermanentRedirect(path)
|
More like this
- Form field with fixed value by roam 4 days, 23 hours ago
- New Snippet! by Antoliny0919 1 week, 4 days ago
- Add Toggle Switch Widget to Django Forms by OgliariNatan 3 months ago
- get_object_or_none by azwdevops 6 months, 3 weeks ago
- Mask sensitive data from logger by agusmakmun 8 months, 2 weeks ago
Comments
Curious if you have any actual evidence or experience that this is a real problem. I have to think that optional querystring parameters (where supplying the default value gets the same results as supplying no value) are quite common across the web, and search engines must take that into account in their duplicate content algorithms.
#
Please login first before commenting.