1
0
Fork 0
forked from github/pelican

Merge pull request #1441 from eliben/server-try-stripping

Server script should try to rstrip '/' when serving pages
This commit is contained in:
Justin Mayer 2018-04-05 08:23:15 -07:00 committed by GitHub
commit c16fdd997c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -16,28 +16,35 @@ from six.moves import socketserver
class ComplexHTTPRequestHandler(srvmod.SimpleHTTPRequestHandler):
SUFFIXES = ['', '.html', '/index.html']
RSTRIP_PATTERNS = ['', '/']
def do_GET(self):
# cut off a query string
if '?' in self.path:
self.path, _ = self.path.split('?', 1)
# Try to detect file by applying various suffixes
for suffix in self.SUFFIXES:
if not hasattr(self, 'original_path'):
self.original_path = self.path
self.path = self.original_path + suffix
path = self.translate_path(self.path)
if os.path.exists(path):
srvmod.SimpleHTTPRequestHandler.do_GET(self)
logging.info("Found `%s`." % self.path)
found = False
# Try to detect file by applying various suffixes and stripping
# patterns.
for rstrip_pattern in self.RSTRIP_PATTERNS:
if found:
break
for suffix in self.SUFFIXES:
if not hasattr(self, 'original_path'):
self.original_path = self.path
logging.info("Tried to find `%s`, but it doesn't exist.",
self.path)
else:
self.path = self.original_path.rstrip(rstrip_pattern) + suffix
path = self.translate_path(self.path)
if os.path.exists(path):
srvmod.SimpleHTTPRequestHandler.do_GET(self)
logging.info("Found `%s`.", self.path)
found = True
break
logging.info("Tried to find `%s`, but it doesn't exist.", path)
if not found:
# Fallback if there were no matches
logging.warning("Unable to find `%s` or variations.",
self.original_path)