How to use mod_rewrite with WSGI?












0















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.










share|improve this question





























    0















    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.










    share|improve this question



























      0












      0








      0








      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.










      share|improve this question
















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 3 at 10:13







      musbur

















      asked Jan 2 at 14:18









      musburmusbur

      947




      947
























          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
          });


          }
          });














          draft saved

          draft discarded


















          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
















          draft saved

          draft discarded




















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          MongoDB - Not Authorized To Execute Command

          How to fix TextFormField cause rebuild widget in Flutter

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith