Description
Using X-Moin-Location to specify the site location, along with ModRewrite, can be broken by a patch labeled in the code as sometimes needed for ModPython.
Steps to reproduce
Setup a ReWriteRule to take the ".cgi" off of the cgi-script used to execute MoinMoin.
Setup a RequestHeader so that generated links will also not have the .cgi extension
Example
in .htaccess
ReWriteEngine on ReWriteRule ^moin(/.*)? moin.cgi1ドル RequestHeader set X-Moin-Location /moin/
Details
Around line 506 of request.py, there is the code
# This may happen when using mod_python if scriptAndPath.startswith(location): self.path_info = scriptAndPath[len(location):]
If the location (specified by the X-Moin-Location header) is a leading subset of scriptAndPath (the actual CGI script), then this code clobbers the the path_info. Instead of a script of moin.cgi and a path_info of FrontPage, we get a script of moin and a path_info of .cgi/FrontPage.
MoinMoin Version
1.5.6
OS and Version
Linux 2.4.32 (Debian)
Python Version
2.3.5
Server Setup
Apache with CGI
Server Details
wikifarm
Language you are using the wiki in (set in the browser/UserPreferences)
English
Workaround
Comment out these lines of code.
Another possibility might be to have the public script name and the actual script name start differently.
Discussion
(!) To remove that mod_python related hack, we need some moin users trying to run it without those 2 lines in request.py and report back here about success.
Does anyone know what problem this hack was intended to solve? Perhaps some other patch can be developed that takes into account the special nature of the '/' character. Perhaps something like
# This may happen when using mod_python if scriptAndPath.startswith(location) && scriptAndPath[len(location)] == "/": self.path_info = scriptAndPath[len(location):]
(Sorry for any syntax errors; my python is a bit rusty.)
Plan
- Priority:
- Assigned to:
- Status: