Can someone pls exaplain why this doesn’t work? RewriteRule (.*) html/pages/$1/index.php [L]
Because it creates an infinite loop.
And so on and so forth.
What you need is a
RewriteCond that informs Apache not to rewrite when the URL already starts with
Thanks for your reply. But why does it continue? What makes it continue?
I find many explanations where it is mentioned that the loop is the cause, but not what causes the loop.
This is good , this is correct. Why is it not done here? What in the regex makes it continue?
A rewrite redirects from one URL to another.
When you go to the initial URL the rules in .htaccess are followed and you are redirected, as per your rule.
As you request the new URL the rules in the .htaccess are followed as with any URL, you are redirected again.
Any redirect means that .htaccess is run again and any rules in it followed again.
Because your rule redirects any URL, every URL redirects and falls into a loop.
Any URL is passed through all RewriteRules in the .htaccess file.
If the URL that comes out is different than the URL that goes in then Apache starts the process over.
This continues until the URL that goes in is the same as the URL that comes out, or until Apache has looped 10 times, whichever comes first.
So it’s not the regex that loops, it’s Apache that loops.
Not entirely correct, Apache starts to use the new URL internally for the request. Without the
[R] flag on a
RewriteRule Apache won’t actually redirect the user.
Based on your answers, then why doesn’t this (or similar) continue over and over again?
RewriteRule start html/pages/start.php
Why are you even structuring like example.com/html/pages/se/index.php in the first place?
It’s not about that, i’m trying to understand how the rewrite works
What is the entire contents of your .htaccess?
Because it doesn’t change over and over again. First it changes from whatever it was that contains
html/pages/start.php, but then when a next round is started it is “changed” to
html/pages/start.php, but since that’s the same value as we started with, it didn’t actually change and Apache doesn’t count it as a change.
You may want to look into some documentation: https://httpd.apache.org/docs/2.4/rewrite/flags.html
This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.