How to use mod_rewrite with WSGI?
My Apache configuration contains these lines.
WSGIScriptAlias /DEV /var/www/wsgi/dham.wsgi
RewriteEngine on
RewriteRule /jw1 /index.html
RewriteRule /jw2 /DEV/jobwatch/
What I don't understand is:
- curl localhost/DEV/jobwatch/ -> works
- curl localhost/host/jw1 -> works
- curl localhost/jw2 -> 404 Not Found
Why is that? I don't think it has to do with AllowOverride because that (according to the Apache docs) only pertains to .htaccess files.
EDIT:
After enabling rewrite tracing, I find these entries in the error_log:
rewrite '/jw1' -> '/DEV/jobwatch'
local path result: /DEV/jobwatch
prefixed with document_root to /var/www/html/DEV/jobwatch
go-ahead with /var/www/html/DEV/jobwatch [OK]
This doesn't make sense because the mod_rewrite docs mod_rewrite docs say, specifically:
Note that mod_rewrite tries to guess whether you have specified a
file-system path or a URL-path by checking to see if the first segment
of the path exists at the root of the file-system. For example, if you
specify a Substitution string of /www/file.html, then this will be
treated as a URL-path unless a directory named www exists at the root
or your file-system
This shouldn't happen because I obviously do not have anything called /DEV anywhere in my file system, let alone in the /var/www hierarchy.
OK, this goes away after adding [PT] to the rewrite rule. It works OK, but every link in the rendered page now contains the "/DEV" bit, which is logical because the WSGI app (correctly) thinks that it lives under /DEV. So far I have no idea how to get rid of that, but that's a secondary problem.
apache wsgi
add a comment |
My Apache configuration contains these lines.
WSGIScriptAlias /DEV /var/www/wsgi/dham.wsgi
RewriteEngine on
RewriteRule /jw1 /index.html
RewriteRule /jw2 /DEV/jobwatch/
What I don't understand is:
- curl localhost/DEV/jobwatch/ -> works
- curl localhost/host/jw1 -> works
- curl localhost/jw2 -> 404 Not Found
Why is that? I don't think it has to do with AllowOverride because that (according to the Apache docs) only pertains to .htaccess files.
EDIT:
After enabling rewrite tracing, I find these entries in the error_log:
rewrite '/jw1' -> '/DEV/jobwatch'
local path result: /DEV/jobwatch
prefixed with document_root to /var/www/html/DEV/jobwatch
go-ahead with /var/www/html/DEV/jobwatch [OK]
This doesn't make sense because the mod_rewrite docs mod_rewrite docs say, specifically:
Note that mod_rewrite tries to guess whether you have specified a
file-system path or a URL-path by checking to see if the first segment
of the path exists at the root of the file-system. For example, if you
specify a Substitution string of /www/file.html, then this will be
treated as a URL-path unless a directory named www exists at the root
or your file-system
This shouldn't happen because I obviously do not have anything called /DEV anywhere in my file system, let alone in the /var/www hierarchy.
OK, this goes away after adding [PT] to the rewrite rule. It works OK, but every link in the rendered page now contains the "/DEV" bit, which is logical because the WSGI app (correctly) thinks that it lives under /DEV. So far I have no idea how to get rid of that, but that's a secondary problem.
apache wsgi
add a comment |
My Apache configuration contains these lines.
WSGIScriptAlias /DEV /var/www/wsgi/dham.wsgi
RewriteEngine on
RewriteRule /jw1 /index.html
RewriteRule /jw2 /DEV/jobwatch/
What I don't understand is:
- curl localhost/DEV/jobwatch/ -> works
- curl localhost/host/jw1 -> works
- curl localhost/jw2 -> 404 Not Found
Why is that? I don't think it has to do with AllowOverride because that (according to the Apache docs) only pertains to .htaccess files.
EDIT:
After enabling rewrite tracing, I find these entries in the error_log:
rewrite '/jw1' -> '/DEV/jobwatch'
local path result: /DEV/jobwatch
prefixed with document_root to /var/www/html/DEV/jobwatch
go-ahead with /var/www/html/DEV/jobwatch [OK]
This doesn't make sense because the mod_rewrite docs mod_rewrite docs say, specifically:
Note that mod_rewrite tries to guess whether you have specified a
file-system path or a URL-path by checking to see if the first segment
of the path exists at the root of the file-system. For example, if you
specify a Substitution string of /www/file.html, then this will be
treated as a URL-path unless a directory named www exists at the root
or your file-system
This shouldn't happen because I obviously do not have anything called /DEV anywhere in my file system, let alone in the /var/www hierarchy.
OK, this goes away after adding [PT] to the rewrite rule. It works OK, but every link in the rendered page now contains the "/DEV" bit, which is logical because the WSGI app (correctly) thinks that it lives under /DEV. So far I have no idea how to get rid of that, but that's a secondary problem.
apache wsgi
My Apache configuration contains these lines.
WSGIScriptAlias /DEV /var/www/wsgi/dham.wsgi
RewriteEngine on
RewriteRule /jw1 /index.html
RewriteRule /jw2 /DEV/jobwatch/
What I don't understand is:
- curl localhost/DEV/jobwatch/ -> works
- curl localhost/host/jw1 -> works
- curl localhost/jw2 -> 404 Not Found
Why is that? I don't think it has to do with AllowOverride because that (according to the Apache docs) only pertains to .htaccess files.
EDIT:
After enabling rewrite tracing, I find these entries in the error_log:
rewrite '/jw1' -> '/DEV/jobwatch'
local path result: /DEV/jobwatch
prefixed with document_root to /var/www/html/DEV/jobwatch
go-ahead with /var/www/html/DEV/jobwatch [OK]
This doesn't make sense because the mod_rewrite docs mod_rewrite docs say, specifically:
Note that mod_rewrite tries to guess whether you have specified a
file-system path or a URL-path by checking to see if the first segment
of the path exists at the root of the file-system. For example, if you
specify a Substitution string of /www/file.html, then this will be
treated as a URL-path unless a directory named www exists at the root
or your file-system
This shouldn't happen because I obviously do not have anything called /DEV anywhere in my file system, let alone in the /var/www hierarchy.
OK, this goes away after adding [PT] to the rewrite rule. It works OK, but every link in the rendered page now contains the "/DEV" bit, which is logical because the WSGI app (correctly) thinks that it lives under /DEV. So far I have no idea how to get rid of that, but that's a secondary problem.
apache wsgi
apache wsgi
edited Jan 3 at 10:13
musbur
asked Jan 2 at 14:18
musburmusbur
947
947
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54007957%2fhow-to-use-mod-rewrite-with-wsgi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54007957%2fhow-to-use-mod-rewrite-with-wsgi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown