mutale85 profile image Mutale85 ・1 min read

Mine is a question.
I have a redirect from, (example.com/users?user='username')
I have redirected this to (example.com/username)
How I am also trying to redirect (example.com/members/settings) to (example.com/settings), the redirect seems to work, except that, its opening the page of (example.com/username).

Here is my code.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ users/index.php?id=$1 [L]
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^example.com/members/settings$ http://example.com/settings/ [R=301,L]

How can i make (example.com/settings) to open its own page?


markdown guide

Your first rule is saying, "take any path that doesn't include a / and send it as a query string value to users/index.php. This is relatively safe, I think.

Your second rule, the redirect from example.com/members/settings to http://example.com/settings/ has a couple of problems:

  1. you're relying on it ending in a slash to avoid the first rule. That might not make the cut, I don't know.
  2. you're using URLs not paths - you don't need the example.com part
  3. you're specifying a scheme of http in the redirect which isn't necessary and will probably break things if you're using https (which most people do).

If you browse to /settings/ with the trailing slash (like the redirect suggests) it's possible it'll work, however, it'll be trying to get its content from something like /settings/index.html unless you're using other overrides somewhere else.

If you browse to /settings without the trailing slash it'll hit the first rule and redirect to users/index.php?id=settings

You don't need to use RewriteEngine On more than once.

I don't have any of this set up, so I don't guarantee anything I say is particularly right.


your response is highly appreciated. Let me try to check through.