Keep Server Online
If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.
or
A donation makes a contribution towards the costs, the time and effort that's going in this site and building.
Thank You! Steffen
Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
| |
|
Topic: Rewrite or Redirect permanent? |
|
Author |
|
Krischu
Joined: 23 Oct 2009 Posts: 25
|
Posted: Tue 25 Jul '23 16:45 Post subject: Rewrite or Redirect permanent? |
|
|
In my VirtualHost *:80 section I have a
Code: | Redirect permanent / https://www.myhost.tld/ |
Later in the secure host section I have a
Code: | Redirect permanent /master https://myhost.ddnss.tld:8083/fs/web/Master11/ |
This works fine. But when I want to pass something like
, how can I achieve this?
That the result is e.g.
Code: | https://myhost.ddnss.tld:8083/fs/web/Master22/ |
|
|
Back to top |
|
tangent Moderator
Joined: 16 Aug 2020 Posts: 348 Location: UK
|
Posted: Tue 25 Jul '23 22:56 Post subject: |
|
|
I would go for rewrite everytime.
Your current VirtualHost *:80 section only redirects requests for the site root, whereas the following alternative redirects any non-secure request to its secure equivalent.
Code: | # Define default virtual host
#
<VirtualHost *:80>
# Inherit any global mod_rewrite rules
#
RewriteEngine On
RewriteOptions InheritBefore
# Check for a non-secure HTTP request and if found redirect to HTTPS.
#
RewriteCond %{HTTPS} off
RewriteRule ^/(.*)$ https://www.myhost.tld/$1 [L,NE,R]
</VirtualHost>
|
Similarly, for your default secure section, define a list of redirects as required, e.g.
Code: | # Define secure site virtual host
#
<VirtualHost *:443>
# Inherit any global mod_rewrite rules
#
RewriteEngine On
RewriteOptions InheritBefore
# Enable SSL for this virtual host.
#
SSLEngine on
# Define rewrite redirect rules.
#
RewriteRule ^/master$ https://myhost.ddnss.tld:8083/fs/web/Master11 [L,NE,R]
RewriteRule ^/master/Master22$ https://%https://myhost.ddnss.tld:8083/fs/web/Master22 [L,NE,R]
# Other virtual host directives ...
</VirtualHost>
|
The default redirect with rewrite rules is temporary (302), not permanent (301). If you want permanent use flag R=301 instead of R.
My preference is to stick with temporary redirects, since permanent ones may be cached by client browsers, and if you subsequently alter your site redirects, they won't see the change. |
|
Back to top |
|
Krischu
Joined: 23 Oct 2009 Posts: 25
|
Posted: Wed 26 Jul '23 9:36 Post subject: |
|
|
Thanks for the detailed answer. I will follow your advice, for one regarding using temporary Redirects instead. And going for Rewrite. |
|
Back to top |
|
|
|
|
|
|