Redirect chain htaccess wordpress - .htaccess

I am struggling for some time to solve the redirect chain that WordPress is making and I didn't find yet any solutions.
here is my htaccess:
BEGIN WordPress
enter code here
For now makes the redirect chain:
http://www.example.com/dir/product/
301 Moved Permanently
https://www.example.com/dir/product/
301 Moved Permanently
https://www.example.com/product/
200 OK
The idea is to pass those redirect chains and if you could help me out I would really appreciate
The idea is to redirect dir to dir/ dir to product and product to product without a redirect chain
Kind regards

Related

301 redirect from one domain to another but only for specific pages

We are rebuilding a website for a client from ASP to WordPress. This website will have a different domain, url structure, and file extension. I am only just getting my head around htaccess 301 redirects, and I know enough that I can't do the following:
Redirect 301 http://www.site1.com/about_us.asp https://site2.com/about/
Redirect 301 http://www.site1.com/art-specs/ https://site2.com/specs/
Redirect 301 http://www.site1.com/page/product1/ https://site2.com/product1/
There are about 12 links in total that need to be redirected, and I want to make sure that it is done right the first time as a client's SEO rankings are on the line.
Is there a variation of the above format that I could use? Or a rewrite rule that needs to be done first? Any help (and explanations) would be greatly appreciated!
After looking more into it, I realised that the htaccess file shouldn't need anything other than relative access to the original domain.
i.e. You shouldn't need to declare: http://www.site1.com/about_us.asp since the server and domain should be configured in such a way that /about_us.asp means the same thing.
So the correct answer would be to:
[1] Configure the server (in my case cPanel) by having the original domain added as an addon domain (e.g http://www.site1.com/).
[2] In the htaccess file I would add each of the 301 redirects to the htaccess file:
Redirect 301 /about_us.asp https://site2.com/about/
Redirect 301 /art-specs/ https://site2.com/specs/
Redirect 301 /page/product1/ https://site2.com/product1/
...for each redirect
[3] And finally, adding the following to the bottom of the htaccess file will catch everything else and redirect them to the home page:
RedirectMatch 301 .* https://site2.com

Rewrite Rule For Base Directory

So I'm trying to rewrite the following example. Took a look around but couldn't find the correct post that matched this scenario.
Here is a list of layout for old pages:
www.url.com/directory
www.url.com/directory/page1.html
www.url.com/directory/page2.php
I'm trying to rewrite the following way through htaccess:
Redirect 301 /directory /newdirectory
Redirect 301 /directory/page1.html /newdirectory/page1
Redirect 301 /directory/page2.php /newdirectory/page2
However, the first rewrite rule is interfering with old subpages in that path. So for example, using the above rewrite rules, going to:
www.url.com/directory/page1.html
Points the user to:
www.url.com/newdirectory/page1.html
When it should be pointing user to the slug without the original filename extension:
www.url.com/newdirectory/page1
The only way around this that I've been able to manage is to leave out the www.url.com/newdirectory/page1.html rule entirely. But there are a bunch of links pointing to that base path, so I'd like to redirect that.
Any help would be greatly appreciated. Thanks in advance for the time and help.
url-rewriting redirect rewrite-rules
You need to place the rule for the base directory after the ones for the subpages :
Redirect 301 /directory/page1.html /newdirectory/page1
Redirect 301 /directory/page2.php /newdirectory/page2
Redirect 301 /directory /newdirectory

301 redirect using regular expression in .htaccess

I have suddenly been hit with hundreds of 404 crawl errors to pages which must have been on a previous site (though I thought I'd got them all...). It's a bit strange as I've never seen any page with index.php in it, yet all the errors start with index.php/xxxxx.
So, I want to do the following:
redirect 301 index.php/<wildcard> http://www.example.com
in the .htaccess file.
Can someone tell me whether this is correct, and what I have to put in the <wildcard> place if it is? If this is incorrect, what is the code to accomplish this?
You can use a the Redirect directive in the htaccess file and do a simple regular expression assuming your site doesn't use /index.php/query/parameters like some PHP frameworks do.
Redirect 301 /index.php/(.+) http://www.mysite.com

Redirect with HTACCESS without any index files

I have a domain, but it has no files on the webhost. I want to know if it's possible to do the following with only a .htaccess on my webhost.
But what I want to use this basically for is that I want to redirect my web root http://(www.)mydomain.net to http://domain2.net. And I want http://(www.)mydomain.com/1/ redirect to domain3.net.
Can anybody help me out?
Thanks a lot!
Use the htaccess Redirect line..
i think it would be this (i didn't check to verify it works... but fiddle with it):
Redirect http://mydomain.net http://domain2.net
Redirect http://mydomain.net/1 http://domain3.net
http://kb.mediatemple.net/questions/242/How+do+I+redirect+my+site+using+a+.htaccess+file%3F
You can do this with s simple 301 directive mixed with directories:
I would point mydomain1.com to ip xxx.xxx.xxx.xxx/mydomain1 and then in the htaccess in that directory:
Redirect 301 / http://domain1.net/
Then you can repeat the same for site 2: point site to to ip xxx.xxx.xxx.xxx/mydomain2 and in the htaccess for that directory
Redirect 301 / http://domain2.net/

Redirect every incoming request to specific path preserving file and query?

As I'm not strong with apache could someone point me in right direction with this?
I currently have urls like this
www.domain.com/public/my_file.php?query=thing&another=thing
What I'm looking to do is to rewrite my code so i it don't use /public/ part anymore, but after that i still need to support all crawlers and old urls people are linking to.
So how would i do 301 redirect preserving everything that comes after public/ part?
(Example) Need to redirect something like this
www.domain.com/public/my_file.php?query=thing&another=thing
into this
www.domain.com/my_file.php?query=thing&another=thing
with 301 redirect.
Thnaks.
Redirect 301 /public/my_file.php /my_file.php
The query string gets passed along by default.
EDIT:
To redirect everything in the public folder, use this:
RedirectMatch 301 /public/(.*) /$1

Resources