You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Jim Weill <mo...@icsi.berkeley.edu> on 2019/06/10 23:18:01 UTC

[users@httpd] mod_rewrite question on directory

We have a test server, with test sites that are in two different branches
of development, but essentially the same base content.  They live at
/x/y/z/testsite and /x/y/z/test-site.  We have other sites such as wikis
and one-offs which need to stay online on our production server, and I have
been testing using rewrites to force the URL to conform to the directory
path that is defined in the .conf file.

So for example, in the testsite.conf file, I have the following:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^/$  https://testsite.example.com/testsite/ [L,R]

alias /testsite "/x/y/z/testsite"
<Directory "/x/y/z/testsite">
Require all granted
RewriteEngine On
RewriteBase /testsite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
RewriteCond %{HTTPS} Off
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTP_HOST} !testsite.example.com
RewriteRule ^.*$ https://testsite.example.com%{REQUEST_URI} [R]
</Directory>

The test-site.conf file is the exact same except for adding the hypen in
the names.

We also have the following in ssl.conf for these:
RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
RewriteCond %{HTTP_HOST}        testsite\.example\.com
RewriteCond %{REQUEST_URI}      ^/testsite(.*)
RewriteRule (.*)                https://testsite.example.com%{REQUEST_URI}
[R]
RewriteCond %{HTTP_HOST}         testsite.example.com
RewriteCond %{REQUEST_URI}       ^/$
RewriteRule (.*)                 https://testsite.example.com/testsite/ [R]

RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
RewriteCond %{HTTP_HOST}        test-site\.example\.com
RewriteCond %{REQUEST_URI}      ^/test-site(.*)
RewriteRule (.*)                https://test-site.example.com%{REQUEST_URI}
[R]
RewriteCond %{HTTP_HOST}         test-site.example.com
RewriteCond %{REQUEST_URI}       ^/$
RewriteRule (.*)                 https://test-site.example.com/test-site [R]


If I leave this as shown, and restart the service, neither page loads at
all.  If I comment out the three lines after "RewriteRule ^(.*)/testsite$"
and "RewriteRule ^(.*)/test-site$" respectively, the sites load properly.
We have this exact set of rewrites on ssl.conf for all sites on the
production server and it rewrites the URL properly.  So I'm not sure where
it's failing on the test site.  Logs are set to trace8 on the test server
and I'm not getting anything that helps tells me where the problem is.


jim

Re: [users@httpd] mod_rewrite question on directory

Posted by Frank <th...@apache.org>.
Jim,

Using mod_alias or mod_rewrite with [R] is functionally equivalent, yes.
The former is simpler and easier to maintain, of course.

Note that you can use RedirectMatch if you need PCRE support and/or
captured expressions.

On 12/06/19 05:42 PM, Jim Weill wrote:
> So just to make sure I have this correct:  the main production server
> has a couple pages of rewrites for old URLs and home pages that moved
> servers or changed path.  And changing the baseURL with a Redirect
> directive in a vhost instead of mod_rewrite will not break any of that?
> 
> jim
> 
> On Tue, Jun 11, 2019 at 2:34 PM Igor Cicimov <icicimov@gmail.com
> <ma...@gmail.com>> wrote:
> 
>     Agree, much better than all that rewrite gymnastics.
> 
>     IC
> 
>     On Wed, Jun 12, 2019, 6:30 AM Frank <thumbs@apache.org
>     <ma...@apache.org>> wrote:
> 
>         No, I assure you, ,mod_rewrite is not needed here.
> 
>         To enforce a canonical hostname, use the Redirect directive and
>         separate
>         vhost. To have all requests handled by a php routing script, use
>         FallbackResource /path/to/file.php
> 
>         Lastly, to redirect to https://, use Redirect from a :80 vhost.
> 
>         On 11/06/19 01:24 PM, Jim Weill wrote:
>         > The sites I am trying to model are drupal-based.  We aren't
>         dealing with
>         > plain static HTML or PHP sites.  We have the main server,
>         which this
>         > test server is trying to mirror, and a secondary project
>         server which
>         > exists to give project people limited root access to update
>         their own
>         > code.  The secondary server also has drupal-based sites, but the
>         > redirections I describe in the issue work on the secondary
>         server.  They
>         > were never implemented in any way on the main production
>         server.  If I
>         > put wiki2.example.com <http://wiki2.example.com>
>         <http://wiki2.example.com>, it should return
>         > wiki2.example.com/wiki2 <http://wiki2.example.com/wiki2>
>         <http://wiki2.example.com/wiki2>.    And so if I
>         > have site1, wiki2, and www on the main server, I can go to
>         > wiki2.example.com/www <http://wiki2.example.com/www>
>         <http://wiki2.example.com/www> and get the main
>         > www site, when we want the main site to always turn up
>         > www.example.com/www <http://www.example.com/www>
>         <http://www.example.com/www>. 
>         >
>         > Is this not what mod_rewrite is meant to solve?  I fully admit
>         I am not
>         > well-versed in apache, my prior work was mainly Windows Server and
>         > Exchange, but I am trying to learn this stuff based on what we
>         had set
>         > up long before I came here. 
>         >
>         > jim
>         >
>         > On Tue, Jun 11, 2019 at 5:18 AM Frank <thumbs@apache.org
>         <ma...@apache.org>
>         > <mailto:thumbs@apache.org <ma...@apache.org>>> wrote:
>         >
>         >     You are also grossly abusing mod_rewrite for this. It
>         isn't needed
>         >     at all.
>         >
>         >     Use FallbackResource, Redirect, and separate vhosts, as
>         Igor mentioned.
>         >
>         >     On 11/06/19 01:33 AM, Igor Cicimov wrote:
>         >     > Since you already have two separate domains why not use
>         virtual hosts
>         >     > each with it's own document root?
>         >     >
>         >     > IC
>         >     >
>         >     > On Tue, Jun 11, 2019, 9:18 AM Jim Weill
>         <moondog@icsi.berkeley.edu <ma...@icsi.berkeley.edu>
>         >     <mailto:moondog@icsi.berkeley.edu
>         <ma...@icsi.berkeley.edu>>
>         >     > <mailto:moondog@icsi.berkeley.edu
>         <ma...@icsi.berkeley.edu>
>         >     <mailto:moondog@icsi.berkeley.edu
>         <ma...@icsi.berkeley.edu>>>> wrote:
>         >     >
>         >     >     We have a test server, with test sites that are in
>         two different
>         >     >     branches of development, but essentially the same
>         base content.
>         >     >     They live at /x/y/z/testsite and /x/y/z/test-site. 
>         We have other
>         >     >     sites such as wikis and one-offs which need to stay
>         online on our
>         >     >     production server, and I have been testing using
>         rewrites to force
>         >     >     the URL to conform to the directory path that is
>         defined in the
>         >     >     .conf file.
>         >     >
>         >     >     So for example, in the testsite.conf file, I have
>         the following:
>         >     >     RewriteEngine On
>         >     >     RewriteCond %{HTTP_HOST} ^www.example.com
>         <http://www.example.com>
>         >     <http://www.example.com> <http://www.example.com>$ [NC]
>         >     >     RewriteRule ^/$ 
>         https://testsite.example.com/testsite/ [L,R]
>         >     >
>         >     >     alias /testsite "/x/y/z/testsite"
>         >     >     <Directory "/x/y/z/testsite">
>         >     >     Require all granted
>         >     >     RewriteEngine On
>         >     >     RewriteBase /testsite
>         >     >     RewriteCond %{REQUEST_FILENAME} !-f
>         >     >     RewriteCond %{REQUEST_FILENAME} !-d
>         >     >     RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
>         >     >     RewriteCond %{HTTPS} Off
>         >     >     RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
>         >     >     RewriteCond %{HTTP_HOST} !testsite.example.com
>         <http://testsite.example.com>
>         >     <http://testsite.example.com>
>         >     >     <http://testsite.example.com>
>         >     >     RewriteRule ^.*$
>         https://testsite.example.com%{REQUEST_URI} [R]
>         >     >     </Directory>
>         >     >
>         >     >     The test-site.conf file is the exact same except for
>         adding the
>         >     >     hypen in the names.
>         >     >
>         >     >     We also have the following in ssl.conf for these:
>         >     >     RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
>         >     >     RewriteCond %{HTTP_HOST}        testsite\.example\.com
>         >     >     RewriteCond %{REQUEST_URI}      ^/testsite(.*)
>         >     >     RewriteRule (.*)             
>         >     >      https://testsite.example.com%{REQUEST_URI} [R]
>         >     >     RewriteCond %{HTTP_HOST}       
>          testsite.example.com <http://testsite.example.com>
>         >     <http://testsite.example.com>
>         >     >     <http://testsite.example.com>
>         >     >     RewriteCond %{REQUEST_URI}       ^/$
>         >     >     RewriteRule (.*)               
>         >     >     https://testsite.example.com/testsite/ [R]
>         >     >
>         >     >     RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
>         >     >     RewriteCond %{HTTP_HOST}        test-site\.example\.com
>         >     >     RewriteCond %{REQUEST_URI}      ^/test-site(.*)
>         >     >     RewriteRule (.*)             
>         >     >      https://test-site.example.com%{REQUEST_URI} [R]
>         >     >     RewriteCond %{HTTP_HOST}       
>          test-site.example.com <http://test-site.example.com>
>         >     <http://test-site.example.com>
>         >     >     <http://test-site.example.com>
>         >     >     RewriteCond %{REQUEST_URI}       ^/$
>         >     >     RewriteRule (.*)               
>         >     >     https://test-site.example.com/test-site [R]
>         >     >
>         >     >
>         >     >     If I leave this as shown, and restart the service,
>         neither page
>         >     >     loads at all.  If I comment out the three lines
>         after "RewriteRule
>         >     >     ^(.*)/testsite$" and "RewriteRule ^(.*)/test-site$"
>         respectively,
>         >     >     the sites load properly.  We have this exact set of
>         rewrites on
>         >     >     ssl.conf for all sites on the production server and it
>         >     rewrites the
>         >     >     URL properly.  So I'm not sure where it's failing on
>         the test
>         >     site.
>         >     >     Logs are set to trace8 on the test server and I'm
>         not getting
>         >     >     anything that helps tells me where the problem is.
>         >     >         
>         >     >
>         >     >     jim
>         >     >
>         >
>         >   
>          ---------------------------------------------------------------------
>         >     To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>         <ma...@httpd.apache.org>
>         >     <mailto:users-unsubscribe@httpd.apache.org
>         <ma...@httpd.apache.org>>
>         >     For additional commands, e-mail:
>         users-help@httpd.apache.org <ma...@httpd.apache.org>
>         >     <mailto:users-help@httpd.apache.org
>         <ma...@httpd.apache.org>>
>         >
> 
>         ---------------------------------------------------------------------
>         To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>         <ma...@httpd.apache.org>
>         For additional commands, e-mail: users-help@httpd.apache.org
>         <ma...@httpd.apache.org>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] mod_rewrite question on directory

Posted by Jim Weill <mo...@icsi.berkeley.edu>.
So just to make sure I have this correct:  the main production server has a
couple pages of rewrites for old URLs and home pages that moved servers or
changed path.  And changing the baseURL with a Redirect directive in a
vhost instead of mod_rewrite will not break any of that?

jim

On Tue, Jun 11, 2019 at 2:34 PM Igor Cicimov <ic...@gmail.com> wrote:

> Agree, much better than all that rewrite gymnastics.
>
> IC
>
> On Wed, Jun 12, 2019, 6:30 AM Frank <th...@apache.org> wrote:
>
>> No, I assure you, ,mod_rewrite is not needed here.
>>
>> To enforce a canonical hostname, use the Redirect directive and separate
>> vhost. To have all requests handled by a php routing script, use
>> FallbackResource /path/to/file.php
>>
>> Lastly, to redirect to https://, use Redirect from a :80 vhost.
>>
>> On 11/06/19 01:24 PM, Jim Weill wrote:
>> > The sites I am trying to model are drupal-based.  We aren't dealing with
>> > plain static HTML or PHP sites.  We have the main server, which this
>> > test server is trying to mirror, and a secondary project server which
>> > exists to give project people limited root access to update their own
>> > code.  The secondary server also has drupal-based sites, but the
>> > redirections I describe in the issue work on the secondary server.  They
>> > were never implemented in any way on the main production server.  If I
>> > put wiki2.example.com <http://wiki2.example.com>, it should return
>> > wiki2.example.com/wiki2 <http://wiki2.example.com/wiki2>.    And so if
>> I
>> > have site1, wiki2, and www on the main server, I can go to
>> > wiki2.example.com/www <http://wiki2.example.com/www> and get the main
>> > www site, when we want the main site to always turn up
>> > www.example.com/www <http://www.example.com/www>.
>> >
>> > Is this not what mod_rewrite is meant to solve?  I fully admit I am not
>> > well-versed in apache, my prior work was mainly Windows Server and
>> > Exchange, but I am trying to learn this stuff based on what we had set
>> > up long before I came here.
>> >
>> > jim
>> >
>> > On Tue, Jun 11, 2019 at 5:18 AM Frank <thumbs@apache.org
>> > <ma...@apache.org>> wrote:
>> >
>> >     You are also grossly abusing mod_rewrite for this. It isn't needed
>> >     at all.
>> >
>> >     Use FallbackResource, Redirect, and separate vhosts, as Igor
>> mentioned.
>> >
>> >     On 11/06/19 01:33 AM, Igor Cicimov wrote:
>> >     > Since you already have two separate domains why not use virtual
>> hosts
>> >     > each with it's own document root?
>> >     >
>> >     > IC
>> >     >
>> >     > On Tue, Jun 11, 2019, 9:18 AM Jim Weill <
>> moondog@icsi.berkeley.edu
>> >     <ma...@icsi.berkeley.edu>
>> >     > <mailto:moondog@icsi.berkeley.edu
>> >     <ma...@icsi.berkeley.edu>>> wrote:
>> >     >
>> >     >     We have a test server, with test sites that are in two
>> different
>> >     >     branches of development, but essentially the same base
>> content.
>> >     >     They live at /x/y/z/testsite and /x/y/z/test-site.  We have
>> other
>> >     >     sites such as wikis and one-offs which need to stay online on
>> our
>> >     >     production server, and I have been testing using rewrites to
>> force
>> >     >     the URL to conform to the directory path that is defined in
>> the
>> >     >     .conf file.
>> >     >
>> >     >     So for example, in the testsite.conf file, I have the
>> following:
>> >     >     RewriteEngine On
>> >     >     RewriteCond %{HTTP_HOST} ^www.example.com
>> >     <http://www.example.com> <http://www.example.com>$ [NC]
>> >     >     RewriteRule ^/$  https://testsite.example.com/testsite/ [L,R]
>> >     >
>> >     >     alias /testsite "/x/y/z/testsite"
>> >     >     <Directory "/x/y/z/testsite">
>> >     >     Require all granted
>> >     >     RewriteEngine On
>> >     >     RewriteBase /testsite
>> >     >     RewriteCond %{REQUEST_FILENAME} !-f
>> >     >     RewriteCond %{REQUEST_FILENAME} !-d
>> >     >     RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
>> >     >     RewriteCond %{HTTPS} Off
>> >     >     RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
>> >     >     RewriteCond %{HTTP_HOST} !testsite.example.com
>> >     <http://testsite.example.com>
>> >     >     <http://testsite.example.com>
>> >     >     RewriteRule ^.*$ https://testsite.example.com%{REQUEST_URI}
>> [R]
>> >     >     </Directory>
>> >     >
>> >     >     The test-site.conf file is the exact same except for adding
>> the
>> >     >     hypen in the names.
>> >     >
>> >     >     We also have the following in ssl.conf for these:
>> >     >     RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
>> >     >     RewriteCond %{HTTP_HOST}        testsite\.example\.com
>> >     >     RewriteCond %{REQUEST_URI}      ^/testsite(.*)
>> >     >     RewriteRule (.*)
>> >     >      https://testsite.example.com%{REQUEST_URI} [R]
>> >     >     RewriteCond %{HTTP_HOST}         testsite.example.com
>> >     <http://testsite.example.com>
>> >     >     <http://testsite.example.com>
>> >     >     RewriteCond %{REQUEST_URI}       ^/$
>> >     >     RewriteRule (.*)
>> >     >     https://testsite.example.com/testsite/ [R]
>> >     >
>> >     >     RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
>> >     >     RewriteCond %{HTTP_HOST}        test-site\.example\.com
>> >     >     RewriteCond %{REQUEST_URI}      ^/test-site(.*)
>> >     >     RewriteRule (.*)
>> >     >      https://test-site.example.com%{REQUEST_URI} [R]
>> >     >     RewriteCond %{HTTP_HOST}         test-site.example.com
>> >     <http://test-site.example.com>
>> >     >     <http://test-site.example.com>
>> >     >     RewriteCond %{REQUEST_URI}       ^/$
>> >     >     RewriteRule (.*)
>> >     >     https://test-site.example.com/test-site [R]
>> >     >
>> >     >
>> >     >     If I leave this as shown, and restart the service, neither
>> page
>> >     >     loads at all.  If I comment out the three lines after
>> "RewriteRule
>> >     >     ^(.*)/testsite$" and "RewriteRule ^(.*)/test-site$"
>> respectively,
>> >     >     the sites load properly.  We have this exact set of rewrites
>> on
>> >     >     ssl.conf for all sites on the production server and it
>> >     rewrites the
>> >     >     URL properly.  So I'm not sure where it's failing on the test
>> >     site.
>> >     >     Logs are set to trace8 on the test server and I'm not getting
>> >     >     anything that helps tells me where the problem is.
>> >     >
>> >     >
>> >     >     jim
>> >     >
>> >
>> >
>>  ---------------------------------------------------------------------
>> >     To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>> >     <ma...@httpd.apache.org>
>> >     For additional commands, e-mail: users-help@httpd.apache.org
>> >     <ma...@httpd.apache.org>
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>> For additional commands, e-mail: users-help@httpd.apache.org
>>
>>

Re: [users@httpd] mod_rewrite question on directory

Posted by Igor Cicimov <ic...@gmail.com>.
Agree, much better than all that rewrite gymnastics.

IC

On Wed, Jun 12, 2019, 6:30 AM Frank <th...@apache.org> wrote:

> No, I assure you, ,mod_rewrite is not needed here.
>
> To enforce a canonical hostname, use the Redirect directive and separate
> vhost. To have all requests handled by a php routing script, use
> FallbackResource /path/to/file.php
>
> Lastly, to redirect to https://, use Redirect from a :80 vhost.
>
> On 11/06/19 01:24 PM, Jim Weill wrote:
> > The sites I am trying to model are drupal-based.  We aren't dealing with
> > plain static HTML or PHP sites.  We have the main server, which this
> > test server is trying to mirror, and a secondary project server which
> > exists to give project people limited root access to update their own
> > code.  The secondary server also has drupal-based sites, but the
> > redirections I describe in the issue work on the secondary server.  They
> > were never implemented in any way on the main production server.  If I
> > put wiki2.example.com <http://wiki2.example.com>, it should return
> > wiki2.example.com/wiki2 <http://wiki2.example.com/wiki2>.    And so if I
> > have site1, wiki2, and www on the main server, I can go to
> > wiki2.example.com/www <http://wiki2.example.com/www> and get the main
> > www site, when we want the main site to always turn up
> > www.example.com/www <http://www.example.com/www>.
> >
> > Is this not what mod_rewrite is meant to solve?  I fully admit I am not
> > well-versed in apache, my prior work was mainly Windows Server and
> > Exchange, but I am trying to learn this stuff based on what we had set
> > up long before I came here.
> >
> > jim
> >
> > On Tue, Jun 11, 2019 at 5:18 AM Frank <thumbs@apache.org
> > <ma...@apache.org>> wrote:
> >
> >     You are also grossly abusing mod_rewrite for this. It isn't needed
> >     at all.
> >
> >     Use FallbackResource, Redirect, and separate vhosts, as Igor
> mentioned.
> >
> >     On 11/06/19 01:33 AM, Igor Cicimov wrote:
> >     > Since you already have two separate domains why not use virtual
> hosts
> >     > each with it's own document root?
> >     >
> >     > IC
> >     >
> >     > On Tue, Jun 11, 2019, 9:18 AM Jim Weill <moondog@icsi.berkeley.edu
> >     <ma...@icsi.berkeley.edu>
> >     > <mailto:moondog@icsi.berkeley.edu
> >     <ma...@icsi.berkeley.edu>>> wrote:
> >     >
> >     >     We have a test server, with test sites that are in two
> different
> >     >     branches of development, but essentially the same base content.
> >     >     They live at /x/y/z/testsite and /x/y/z/test-site.  We have
> other
> >     >     sites such as wikis and one-offs which need to stay online on
> our
> >     >     production server, and I have been testing using rewrites to
> force
> >     >     the URL to conform to the directory path that is defined in the
> >     >     .conf file.
> >     >
> >     >     So for example, in the testsite.conf file, I have the
> following:
> >     >     RewriteEngine On
> >     >     RewriteCond %{HTTP_HOST} ^www.example.com
> >     <http://www.example.com> <http://www.example.com>$ [NC]
> >     >     RewriteRule ^/$  https://testsite.example.com/testsite/ [L,R]
> >     >
> >     >     alias /testsite "/x/y/z/testsite"
> >     >     <Directory "/x/y/z/testsite">
> >     >     Require all granted
> >     >     RewriteEngine On
> >     >     RewriteBase /testsite
> >     >     RewriteCond %{REQUEST_FILENAME} !-f
> >     >     RewriteCond %{REQUEST_FILENAME} !-d
> >     >     RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
> >     >     RewriteCond %{HTTPS} Off
> >     >     RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
> >     >     RewriteCond %{HTTP_HOST} !testsite.example.com
> >     <http://testsite.example.com>
> >     >     <http://testsite.example.com>
> >     >     RewriteRule ^.*$ https://testsite.example.com%{REQUEST_URI}
> [R]
> >     >     </Directory>
> >     >
> >     >     The test-site.conf file is the exact same except for adding the
> >     >     hypen in the names.
> >     >
> >     >     We also have the following in ssl.conf for these:
> >     >     RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
> >     >     RewriteCond %{HTTP_HOST}        testsite\.example\.com
> >     >     RewriteCond %{REQUEST_URI}      ^/testsite(.*)
> >     >     RewriteRule (.*)
> >     >      https://testsite.example.com%{REQUEST_URI} [R]
> >     >     RewriteCond %{HTTP_HOST}         testsite.example.com
> >     <http://testsite.example.com>
> >     >     <http://testsite.example.com>
> >     >     RewriteCond %{REQUEST_URI}       ^/$
> >     >     RewriteRule (.*)
> >     >     https://testsite.example.com/testsite/ [R]
> >     >
> >     >     RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
> >     >     RewriteCond %{HTTP_HOST}        test-site\.example\.com
> >     >     RewriteCond %{REQUEST_URI}      ^/test-site(.*)
> >     >     RewriteRule (.*)
> >     >      https://test-site.example.com%{REQUEST_URI} [R]
> >     >     RewriteCond %{HTTP_HOST}         test-site.example.com
> >     <http://test-site.example.com>
> >     >     <http://test-site.example.com>
> >     >     RewriteCond %{REQUEST_URI}       ^/$
> >     >     RewriteRule (.*)
> >     >     https://test-site.example.com/test-site [R]
> >     >
> >     >
> >     >     If I leave this as shown, and restart the service, neither page
> >     >     loads at all.  If I comment out the three lines after
> "RewriteRule
> >     >     ^(.*)/testsite$" and "RewriteRule ^(.*)/test-site$"
> respectively,
> >     >     the sites load properly.  We have this exact set of rewrites on
> >     >     ssl.conf for all sites on the production server and it
> >     rewrites the
> >     >     URL properly.  So I'm not sure where it's failing on the test
> >     site.
> >     >     Logs are set to trace8 on the test server and I'm not getting
> >     >     anything that helps tells me where the problem is.
> >     >
> >     >
> >     >     jim
> >     >
> >
> >     ---------------------------------------------------------------------
> >     To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> >     <ma...@httpd.apache.org>
> >     For additional commands, e-mail: users-help@httpd.apache.org
> >     <ma...@httpd.apache.org>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>
>

Re: [users@httpd] mod_rewrite question on directory

Posted by Frank <th...@apache.org>.
No, I assure you, ,mod_rewrite is not needed here.

To enforce a canonical hostname, use the Redirect directive and separate
vhost. To have all requests handled by a php routing script, use
FallbackResource /path/to/file.php

Lastly, to redirect to https://, use Redirect from a :80 vhost.

On 11/06/19 01:24 PM, Jim Weill wrote:
> The sites I am trying to model are drupal-based.  We aren't dealing with
> plain static HTML or PHP sites.  We have the main server, which this
> test server is trying to mirror, and a secondary project server which
> exists to give project people limited root access to update their own
> code.  The secondary server also has drupal-based sites, but the
> redirections I describe in the issue work on the secondary server.  They
> were never implemented in any way on the main production server.  If I
> put wiki2.example.com <http://wiki2.example.com>, it should return
> wiki2.example.com/wiki2 <http://wiki2.example.com/wiki2>.    And so if I
> have site1, wiki2, and www on the main server, I can go to
> wiki2.example.com/www <http://wiki2.example.com/www> and get the main
> www site, when we want the main site to always turn up
> www.example.com/www <http://www.example.com/www>.  
> 
> Is this not what mod_rewrite is meant to solve?  I fully admit I am not
> well-versed in apache, my prior work was mainly Windows Server and
> Exchange, but I am trying to learn this stuff based on what we had set
> up long before I came here.  
> 
> jim
> 
> On Tue, Jun 11, 2019 at 5:18 AM Frank <thumbs@apache.org
> <ma...@apache.org>> wrote:
> 
>     You are also grossly abusing mod_rewrite for this. It isn't needed
>     at all.
> 
>     Use FallbackResource, Redirect, and separate vhosts, as Igor mentioned.
> 
>     On 11/06/19 01:33 AM, Igor Cicimov wrote:
>     > Since you already have two separate domains why not use virtual hosts
>     > each with it's own document root?
>     >
>     > IC
>     >
>     > On Tue, Jun 11, 2019, 9:18 AM Jim Weill <moondog@icsi.berkeley.edu
>     <ma...@icsi.berkeley.edu>
>     > <mailto:moondog@icsi.berkeley.edu
>     <ma...@icsi.berkeley.edu>>> wrote:
>     >
>     >     We have a test server, with test sites that are in two different
>     >     branches of development, but essentially the same base content.
>     >     They live at /x/y/z/testsite and /x/y/z/test-site.  We have other
>     >     sites such as wikis and one-offs which need to stay online on our
>     >     production server, and I have been testing using rewrites to force
>     >     the URL to conform to the directory path that is defined in the
>     >     .conf file.
>     >
>     >     So for example, in the testsite.conf file, I have the following:
>     >     RewriteEngine On
>     >     RewriteCond %{HTTP_HOST} ^www.example.com
>     <http://www.example.com> <http://www.example.com>$ [NC]
>     >     RewriteRule ^/$  https://testsite.example.com/testsite/ [L,R]
>     >
>     >     alias /testsite "/x/y/z/testsite"
>     >     <Directory "/x/y/z/testsite">
>     >     Require all granted
>     >     RewriteEngine On
>     >     RewriteBase /testsite
>     >     RewriteCond %{REQUEST_FILENAME} !-f
>     >     RewriteCond %{REQUEST_FILENAME} !-d
>     >     RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
>     >     RewriteCond %{HTTPS} Off
>     >     RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
>     >     RewriteCond %{HTTP_HOST} !testsite.example.com
>     <http://testsite.example.com>
>     >     <http://testsite.example.com>
>     >     RewriteRule ^.*$ https://testsite.example.com%{REQUEST_URI} [R]
>     >     </Directory>
>     >
>     >     The test-site.conf file is the exact same except for adding the
>     >     hypen in the names.
>     >
>     >     We also have the following in ssl.conf for these:
>     >     RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
>     >     RewriteCond %{HTTP_HOST}        testsite\.example\.com
>     >     RewriteCond %{REQUEST_URI}      ^/testsite(.*)
>     >     RewriteRule (.*)             
>     >      https://testsite.example.com%{REQUEST_URI} [R]
>     >     RewriteCond %{HTTP_HOST}         testsite.example.com
>     <http://testsite.example.com>
>     >     <http://testsite.example.com>
>     >     RewriteCond %{REQUEST_URI}       ^/$
>     >     RewriteRule (.*)               
>     >     https://testsite.example.com/testsite/ [R]
>     >
>     >     RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
>     >     RewriteCond %{HTTP_HOST}        test-site\.example\.com
>     >     RewriteCond %{REQUEST_URI}      ^/test-site(.*)
>     >     RewriteRule (.*)             
>     >      https://test-site.example.com%{REQUEST_URI} [R]
>     >     RewriteCond %{HTTP_HOST}         test-site.example.com
>     <http://test-site.example.com>
>     >     <http://test-site.example.com>
>     >     RewriteCond %{REQUEST_URI}       ^/$
>     >     RewriteRule (.*)               
>     >     https://test-site.example.com/test-site [R]
>     >
>     >
>     >     If I leave this as shown, and restart the service, neither page
>     >     loads at all.  If I comment out the three lines after "RewriteRule
>     >     ^(.*)/testsite$" and "RewriteRule ^(.*)/test-site$" respectively,
>     >     the sites load properly.  We have this exact set of rewrites on
>     >     ssl.conf for all sites on the production server and it
>     rewrites the
>     >     URL properly.  So I'm not sure where it's failing on the test
>     site.
>     >     Logs are set to trace8 on the test server and I'm not getting
>     >     anything that helps tells me where the problem is. 
>     >         
>     >
>     >     jim
>     >
> 
>     ---------------------------------------------------------------------
>     To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>     <ma...@httpd.apache.org>
>     For additional commands, e-mail: users-help@httpd.apache.org
>     <ma...@httpd.apache.org>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] mod_rewrite question on directory

Posted by Jim Weill <mo...@icsi.berkeley.edu>.
The sites I am trying to model are drupal-based.  We aren't dealing with
plain static HTML or PHP sites.  We have the main server, which this test
server is trying to mirror, and a secondary project server which exists to
give project people limited root access to update their own code.  The
secondary server also has drupal-based sites, but the redirections I
describe in the issue work on the secondary server.  They were never
implemented in any way on the main production server.  If I put
wiki2.example.com, it should return wiki2.example.com/wiki2.    And so if I
have site1, wiki2, and www on the main server, I can go to
wiki2.example.com/www and get the main www site, when we want the main site
to always turn up www.example.com/www.

Is this not what mod_rewrite is meant to solve?  I fully admit I am not
well-versed in apache, my prior work was mainly Windows Server and
Exchange, but I am trying to learn this stuff based on what we had set up
long before I came here.

jim

On Tue, Jun 11, 2019 at 5:18 AM Frank <th...@apache.org> wrote:

> You are also grossly abusing mod_rewrite for this. It isn't needed at all.
>
> Use FallbackResource, Redirect, and separate vhosts, as Igor mentioned.
>
> On 11/06/19 01:33 AM, Igor Cicimov wrote:
> > Since you already have two separate domains why not use virtual hosts
> > each with it's own document root?
> >
> > IC
> >
> > On Tue, Jun 11, 2019, 9:18 AM Jim Weill <moondog@icsi.berkeley.edu
> > <ma...@icsi.berkeley.edu>> wrote:
> >
> >     We have a test server, with test sites that are in two different
> >     branches of development, but essentially the same base content.
> >     They live at /x/y/z/testsite and /x/y/z/test-site.  We have other
> >     sites such as wikis and one-offs which need to stay online on our
> >     production server, and I have been testing using rewrites to force
> >     the URL to conform to the directory path that is defined in the
> >     .conf file.
> >
> >     So for example, in the testsite.conf file, I have the following:
> >     RewriteEngine On
> >     RewriteCond %{HTTP_HOST} ^www.example.com <http://www.example.com>$
> [NC]
> >     RewriteRule ^/$  https://testsite.example.com/testsite/ [L,R]
> >
> >     alias /testsite "/x/y/z/testsite"
> >     <Directory "/x/y/z/testsite">
> >     Require all granted
> >     RewriteEngine On
> >     RewriteBase /testsite
> >     RewriteCond %{REQUEST_FILENAME} !-f
> >     RewriteCond %{REQUEST_FILENAME} !-d
> >     RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
> >     RewriteCond %{HTTPS} Off
> >     RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
> >     RewriteCond %{HTTP_HOST} !testsite.example.com
> >     <http://testsite.example.com>
> >     RewriteRule ^.*$ https://testsite.example.com%{REQUEST_URI} [R]
> >     </Directory>
> >
> >     The test-site.conf file is the exact same except for adding the
> >     hypen in the names.
> >
> >     We also have the following in ssl.conf for these:
> >     RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
> >     RewriteCond %{HTTP_HOST}        testsite\.example\.com
> >     RewriteCond %{REQUEST_URI}      ^/testsite(.*)
> >     RewriteRule (.*)
> >      https://testsite.example.com%{REQUEST_URI} [R]
> >     RewriteCond %{HTTP_HOST}         testsite.example.com
> >     <http://testsite.example.com>
> >     RewriteCond %{REQUEST_URI}       ^/$
> >     RewriteRule (.*)
> >     https://testsite.example.com/testsite/ [R]
> >
> >     RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
> >     RewriteCond %{HTTP_HOST}        test-site\.example\.com
> >     RewriteCond %{REQUEST_URI}      ^/test-site(.*)
> >     RewriteRule (.*)
> >      https://test-site.example.com%{REQUEST_URI} [R]
> >     RewriteCond %{HTTP_HOST}         test-site.example.com
> >     <http://test-site.example.com>
> >     RewriteCond %{REQUEST_URI}       ^/$
> >     RewriteRule (.*)
> >     https://test-site.example.com/test-site [R]
> >
> >
> >     If I leave this as shown, and restart the service, neither page
> >     loads at all.  If I comment out the three lines after "RewriteRule
> >     ^(.*)/testsite$" and "RewriteRule ^(.*)/test-site$" respectively,
> >     the sites load properly.  We have this exact set of rewrites on
> >     ssl.conf for all sites on the production server and it rewrites the
> >     URL properly.  So I'm not sure where it's failing on the test site.
> >     Logs are set to trace8 on the test server and I'm not getting
> >     anything that helps tells me where the problem is.
> >
> >
> >     jim
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>
>

Re: [users@httpd] mod_rewrite question on directory

Posted by Frank <th...@apache.org>.
You are also grossly abusing mod_rewrite for this. It isn't needed at all.

Use FallbackResource, Redirect, and separate vhosts, as Igor mentioned.

On 11/06/19 01:33 AM, Igor Cicimov wrote:
> Since you already have two separate domains why not use virtual hosts
> each with it's own document root?
> 
> IC
> 
> On Tue, Jun 11, 2019, 9:18 AM Jim Weill <moondog@icsi.berkeley.edu
> <ma...@icsi.berkeley.edu>> wrote:
> 
>     We have a test server, with test sites that are in two different
>     branches of development, but essentially the same base content. 
>     They live at /x/y/z/testsite and /x/y/z/test-site.  We have other
>     sites such as wikis and one-offs which need to stay online on our
>     production server, and I have been testing using rewrites to force
>     the URL to conform to the directory path that is defined in the
>     .conf file. 
> 
>     So for example, in the testsite.conf file, I have the following:
>     RewriteEngine On
>     RewriteCond %{HTTP_HOST} ^www.example.com <http://www.example.com>$ [NC]
>     RewriteRule ^/$  https://testsite.example.com/testsite/ [L,R]
> 
>     alias /testsite "/x/y/z/testsite"
>     <Directory "/x/y/z/testsite">
>     Require all granted
>     RewriteEngine On
>     RewriteBase /testsite
>     RewriteCond %{REQUEST_FILENAME} !-f
>     RewriteCond %{REQUEST_FILENAME} !-d
>     RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
>     RewriteCond %{HTTPS} Off
>     RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
>     RewriteCond %{HTTP_HOST} !testsite.example.com
>     <http://testsite.example.com>
>     RewriteRule ^.*$ https://testsite.example.com%{REQUEST_URI} [R]
>     </Directory>
> 
>     The test-site.conf file is the exact same except for adding the
>     hypen in the names.
> 
>     We also have the following in ssl.conf for these:
>     RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
>     RewriteCond %{HTTP_HOST}        testsite\.example\.com
>     RewriteCond %{REQUEST_URI}      ^/testsite(.*)
>     RewriteRule (.*)              
>      https://testsite.example.com%{REQUEST_URI} [R]
>     RewriteCond %{HTTP_HOST}         testsite.example.com
>     <http://testsite.example.com>
>     RewriteCond %{REQUEST_URI}       ^/$
>     RewriteRule (.*)                
>     https://testsite.example.com/testsite/ [R]
> 
>     RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
>     RewriteCond %{HTTP_HOST}        test-site\.example\.com
>     RewriteCond %{REQUEST_URI}      ^/test-site(.*)
>     RewriteRule (.*)              
>      https://test-site.example.com%{REQUEST_URI} [R]
>     RewriteCond %{HTTP_HOST}         test-site.example.com
>     <http://test-site.example.com>
>     RewriteCond %{REQUEST_URI}       ^/$
>     RewriteRule (.*)                
>     https://test-site.example.com/test-site [R]
> 
> 
>     If I leave this as shown, and restart the service, neither page
>     loads at all.  If I comment out the three lines after "RewriteRule
>     ^(.*)/testsite$" and "RewriteRule ^(.*)/test-site$" respectively,
>     the sites load properly.  We have this exact set of rewrites on
>     ssl.conf for all sites on the production server and it rewrites the
>     URL properly.  So I'm not sure where it's failing on the test site. 
>     Logs are set to trace8 on the test server and I'm not getting
>     anything that helps tells me where the problem is.  
>         
> 
>     jim
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] mod_rewrite question on directory

Posted by Igor Cicimov <ic...@gmail.com>.
Since you already have two separate domains why not use virtual hosts each
with it's own document root?

IC

On Tue, Jun 11, 2019, 9:18 AM Jim Weill <mo...@icsi.berkeley.edu> wrote:

> We have a test server, with test sites that are in two different branches
> of development, but essentially the same base content.  They live at
> /x/y/z/testsite and /x/y/z/test-site.  We have other sites such as wikis
> and one-offs which need to stay online on our production server, and I have
> been testing using rewrites to force the URL to conform to the directory
> path that is defined in the .conf file.
>
> So for example, in the testsite.conf file, I have the following:
> RewriteEngine On
> RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
> RewriteRule ^/$  https://testsite.example.com/testsite/ [L,R]
>
> alias /testsite "/x/y/z/testsite"
> <Directory "/x/y/z/testsite">
> Require all granted
> RewriteEngine On
> RewriteBase /testsite
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
> RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
> RewriteCond %{HTTPS} Off
> RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI}
> RewriteCond %{HTTP_HOST} !testsite.example.com
> RewriteRule ^.*$ https://testsite.example.com%{REQUEST_URI} [R]
> </Directory>
>
> The test-site.conf file is the exact same except for adding the hypen in
> the names.
>
> We also have the following in ssl.conf for these:
> RewriteRule ^(.*)/testsite$          $1/testsite/ [R,NC]
> RewriteCond %{HTTP_HOST}        testsite\.example\.com
> RewriteCond %{REQUEST_URI}      ^/testsite(.*)
> RewriteRule (.*)                https://testsite.example.com%{REQUEST_URI}
> [R]
> RewriteCond %{HTTP_HOST}         testsite.example.com
> RewriteCond %{REQUEST_URI}       ^/$
> RewriteRule (.*)                 https://testsite.example.com/testsite/
> [R]
>
> RewriteRule ^(.*)/test-site$  $1/test-site/ [R,NC]
> RewriteCond %{HTTP_HOST}        test-site\.example\.com
> RewriteCond %{REQUEST_URI}      ^/test-site(.*)
> RewriteRule (.*)                https://test-site.example.com%{REQUEST_URI}
> [R]
> RewriteCond %{HTTP_HOST}         test-site.example.com
> RewriteCond %{REQUEST_URI}       ^/$
> RewriteRule (.*)                 https://test-site.example.com/test-site
> [R]
>
>
> If I leave this as shown, and restart the service, neither page loads at
> all.  If I comment out the three lines after "RewriteRule ^(.*)/testsite$"
> and "RewriteRule ^(.*)/test-site$" respectively, the sites load properly.
> We have this exact set of rewrites on ssl.conf for all sites on the
> production server and it rewrites the URL properly.  So I'm not sure where
> it's failing on the test site.  Logs are set to trace8 on the test server
> and I'm not getting anything that helps tells me where the problem is.
>
>
> jim
>