The first one has a higher position, so the second will only be executed if the first one didn't apply. This works if there is something in the placeholders, i.e. /code-examples/page1 leads to /tutorials/android/page1.
The problems occur when the placeholders are empty.
Just /code-examples or /code-examples/android WITHOUT the trailing slash leads to 404. With the trailing slash, I can see that it adds a second slash at the end, which results in /tutorials/android//.
How can I get the redirects to work properly with and without something in the placeholders?
The first one has a higher position, so the second will only be executed if the first one didn't apply. This works if there is something in the placeholders, i.e. /code-examples/page1 leads to /tutorials/android/page1.
The problems occur when the placeholders are empty.
Just /code-examples or /code-examples/android WITHOUT the trailing slash leads to 404. With the trailing slash, I can see that it adds a second slash at the end, which results in /tutorials/android//.
How can I get the redirects to work properly with and without something in the placeholders?
wp-redirect
regex
redirect
Share
Improve this question
asked Oct 25, 2018 at 9:06
Florian WaltherFlorian Walther15911 silver badge88 bronze badges5
Where are these redirects? .htaccess?
– Jacob Peattie
CommentedOct 25, 2018 at 9:22
2Your code can be combined: /code-examples(?:/android|)(?:/?(.*)|\b) And the problem with your REGEX is because it's "requiring" the / (slash) at the end. Btw, this question would have probably been better asked on Stack Overflow.
– Sally CJ
CommentedOct 25, 2018 at 9:34
Thank you! Will the regex you posted solve my problem? Looks hella complicated
– Florian Walther
CommentedOct 25, 2018 at 21:19
And I added the redirects with the Redirection plugin. I am a noob.
– Florian Walther
CommentedOct 25, 2018 at 21:19
@FlorianWalther Yes, it will. Check my answer and let me know.
– Sally CJ
CommentedOct 26, 2018 at 3:13
Add a comment
|
1 Answer
1
Reset to default
1
The problem with your RegEx patterns:
/code-examples/(.*)
/code-examples/android/(.*)
is that they only match when the ending slash (/) is present in the URL; e.g.:
# Example 1: $1 is 'page1'
/code-examples/page1
/code-examples/android/page1
# Example 2: $1 is '' (empty)
/code-examples/
/code-examples/android/
# Example 3
# No matches because the ending / is not present.
/code-examples
/code-examples/android
where the "placeholder" (i.e. (.*)) matches the page1 in the first example, and '' (i.e. empty string) in the second example.
To make these work:
/code-examples
/code-examples/android
you can use (?:/?(.*)|\b) instead of /(.*), like so:
/code-examples(?:/android|)(?:/?(.*)|\b)
And the problem with your REGEX is because it's "requiring" the/
(slash) at the end. Btw, this question would have probably been better asked on Stack Overflow. – Sally CJ Commented Oct 25, 2018 at 9:34