mod_rewrite question on directory

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

mod_rewrite question on directory

Jim Weill
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]

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
Reply | Threaded
Open this post in threaded view
|

Re: mod_rewrite question on directory

Igor Cicimov
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 <[hidden email]> 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]

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
Reply | Threaded
Open this post in threaded view
|

Re: mod_rewrite question on directory

Frank Gingras
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 <[hidden email]
> <mailto:[hidden email]>> 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 ^(.*) <a href="https://%">https://%{HTTP_HOST}%{REQUEST_URI}
>     RewriteCond %{HTTP_HOST} !testsite.example.com
>     <http://testsite.example.com>
>     RewriteRule ^.*$ <a href="https://testsite.example.com%">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 (.*)              
>      <a href="https://testsite.example.com%">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 (.*)              
>      <a href="https://test-site.example.com%">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: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: mod_rewrite question on directory

Jim Weill
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 <[hidden email]> 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 <[hidden email]
> <mailto:[hidden email]>> 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: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: mod_rewrite question on directory

Frank Gingras
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 <[hidden email]
> <mailto:[hidden email]>> 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 <[hidden email]
>     <mailto:[hidden email]>
>     > <mailto:[hidden email]
>     <mailto:[hidden email]>>> 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 ^(.*) <a href="https://%">https://%{HTTP_HOST}%{REQUEST_URI}
>     >     RewriteCond %{HTTP_HOST} !testsite.example.com
>     <http://testsite.example.com>
>     >     <http://testsite.example.com>
>     >     RewriteRule ^.*$ <a href="https://testsite.example.com%">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 (.*)            
>     >      <a href="https://testsite.example.com%">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 (.*)            
>     >      <a href="https://test-site.example.com%">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: [hidden email]
>     <mailto:[hidden email]>
>     For additional commands, e-mail: [hidden email]
>     <mailto:[hidden email]>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: mod_rewrite question on directory

Igor Cicimov
Agree, much better than all that rewrite gymnastics.

IC

On Wed, Jun 12, 2019, 6:30 AM Frank <[hidden email]> 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 <[hidden email]
> <mailto:[hidden email]>> 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 <[hidden email]
>     <mailto:[hidden email]>
>     > <mailto:[hidden email]
>     <mailto:[hidden email]>>> 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: [hidden email]
>     <mailto:[hidden email]>
>     For additional commands, e-mail: [hidden email]
>     <mailto:[hidden email]>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: mod_rewrite question on directory

Jim Weill
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 <[hidden email]> wrote:
Agree, much better than all that rewrite gymnastics.

IC

On Wed, Jun 12, 2019, 6:30 AM Frank <[hidden email]> 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 <[hidden email]
> <mailto:[hidden email]>> 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 <[hidden email]
>     <mailto:[hidden email]>
>     > <mailto:[hidden email]
>     <mailto:[hidden email]>>> 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: [hidden email]
>     <mailto:[hidden email]>
>     For additional commands, e-mail: [hidden email]
>     <mailto:[hidden email]>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: mod_rewrite question on directory

Frank Gingras
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 <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Agree, much better than all that rewrite gymnastics.
>
>     IC
>
>     On Wed, Jun 12, 2019, 6:30 AM Frank <[hidden email]
>     <mailto:[hidden email]>> 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 <[hidden email]
>         <mailto:[hidden email]>
>         > <mailto:[hidden email] <mailto:[hidden email]>>> 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
>         <[hidden email] <mailto:[hidden email]>
>         >     <mailto:[hidden email]
>         <mailto:[hidden email]>>
>         >     > <mailto:[hidden email]
>         <mailto:[hidden email]>
>         >     <mailto:[hidden email]
>         <mailto:[hidden email]>>>> 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 ^(.*) <a href="https://%">https://%{HTTP_HOST}%{REQUEST_URI}
>         >     >     RewriteCond %{HTTP_HOST} !testsite.example.com
>         <http://testsite.example.com>
>         >     <http://testsite.example.com>
>         >     >     <http://testsite.example.com>
>         >     >     RewriteRule ^.*$
>         <a href="https://testsite.example.com%">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 (.*)            
>         >     >      <a href="https://testsite.example.com%">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 (.*)            
>         >     >      <a href="https://test-site.example.com%">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: [hidden email]
>         <mailto:[hidden email]>
>         >     <mailto:[hidden email]
>         <mailto:[hidden email]>>
>         >     For additional commands, e-mail:
>         [hidden email] <mailto:[hidden email]>
>         >     <mailto:[hidden email]
>         <mailto:[hidden email]>>
>         >
>
>         ---------------------------------------------------------------------
>         To unsubscribe, e-mail: [hidden email]
>         <mailto:[hidden email]>
>         For additional commands, e-mail: [hidden email]
>         <mailto:[hidden email]>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]