How to redirect website.com/ and website.com/index.php to another page with htaccess - html

I can redirect website.com/index.php to website.com/home but I can't find a way to redirect website.com to website.com/home
I have tried RewriteRule ^/$ /home [R=301] but it does nothing.

A single rule can handle both redirects:
RewriteRule ^/?(index\.php)?$ /home [NC,L,R=301]

Try this
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?website\.com$ [NC]
RewriteRule .* http://www.website.com/home [R=301,L]
This rule redirects www.website.com to www.website.com/home
Or add this to your .htaccess
RewriteRule ^/?$ /home [R=301,L]

Related

Website links won't work with .htaccess code which removes .html extension

I have the following code in my .htacess file for my website to remove '.html' from my urls and to redirect any .html to the same page without it (example.com/home.html to example.com/home)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
#301 from example.com/page.html to example.com/page
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
However, when I try to click on links that are pointed to other pages on my website, I get a 404 error.
I've tried setting the href to http://www.example.com/page2, /page2 and more but I still get the same error. Any help?
Please save your code and put only the following code in your main directory .htaccess file :
RewriteEngine on
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(.*?)\.html[\s?/] [NC]
RewriteRule (.*)$ /%1%2 [R=302,L,NE]
Note: clear your browser cache because you did 301 redirect and test the code

How to redirect using .htaccess file that redirects from clear domain to www.?

How to redirect:
from mydomain.pl to www.mydomain.pl/start
and
from www.mydomain.pl to www.mydomain.pl/start using .htaccess file?
This should not interfere with any other page. Eg. when somebody types mydomain.pl/contact this should only add www. before the domain.
You can place this rule in your DOCUMENT_ROOT/.htaccess file:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^mydomain\.pl$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.pl$ [NC]
RewriteRule ^$ http://www.mydomain.pl/start [L,R]

htaccess to redirect main domain

I have a htaccess that redirects my main domain "www.main.com" to "www.main.com/DBS2010".
The htaccess works but my url changes to "www.main.com/DBS2010" can I make the url stay as "www.main.com"?
htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?main.com$
RewriteRule ^(/)?$ DBS2010 [L]
You can try this code for that:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?main\.com$ [NC]
RewriteRule ^$ DBS2010 [L]
This will not change URL in browser to `/DBS2010'.

.htaccess redirect something to something.html

How to derirect
http://www.mysite.com/something
to
http://www.mysite.com/something.html
And
http://www.mysite.com/#something
to
http://www.mysite.com/something.html
Thanks.
For the first you can use,
RewriteEngine On
RewriteRule ^something((/)?)$ something.html [nc]
Or more generally if you want http://mysite.com/X to go to X.html,
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^([^.]+)((/)?)$ $1.html [nc]
http://www.mysite.com/#something can't be redirected with a rewrite rule, everything after the # never gets passed to the server. You will need to use JavaScript to redirect those links.

htaccess URL wrong redirection

I want to redirect
/about
/about/
/about.html
/about.html/
/weare/
/weare
/weare.html
/weare.html/
All these pages should be redirected to about.html and I want to do this with .htaccess.
I wast trying by
RewriteRule ^(about|weare).*/ about.html [R=Permanent]
This is somewhat working, but not exactly what I want. It is also redirecting some other pages.
I have added as said by ThinkingMonkey
If you want to do a permanent redirect:
RewriteCond %{REQUEST_URI} !^/about\.html$ [NC]
RewriteRule ^(about|weare)(\.html)?/?$ about.html [L,R=301]
This is working But it is going for infinite loop.
Do this:
RewriteRule ^(about|weare)(/|\.html/?)?$ about.html [L]
If you want to do a permanent redirect:
RewriteCond %{REQUEST_URI} !^/about\.html$ [NC]
RewriteRule ^(about|weare)(\.html)?/?$ about.html [L,R=301]
RewriteRule ^((about|weare)(.|/)?(html)?) about.html [NC]