Home URL redirection not working properly: genetates the url http://domain.com/domain.com/
Reply: 0

URL redirection not working properly: genetates the url http://domain.com/domain.com/

user2702
1#
user2702 Published in June 20, 2018, 7:45 am

I have a WordPress site in two languages (Hebrew and English) and I need it to redirect according to browser language. I'm using qTranslate plugin to create the content in both languages. This plugin also has a redirection functionality but it creates a redirection only for the homepage and I need the redirection to happen for internal pages as well as the homepage.

Another developer wrote this code for me to create the redirection, but for some reason it creates a funny redirect. It happens only when switching language to Hebrew, then leaving the site and trying to enter directly to http://domain.com/en/ and it redirects you to http://domain.com/domain.com/ (Does not happen when switching to english).

I tried playing with the "header (Location: )" that creates the redirection for Hebrew, but couldn't figure out how to make it work - I tried using the full path instead of relative path, or removing the "/" between $_SERVER['SERVER_NAME'] and $_SERVER['REQUEST_URI'] but got recursive url or url with double "/" (http://domain.com// and also for internal pages http://domain.com//page).

The url structure is:

  • domain.com/ for Hebrew
  • domain.com/en/ for English

and when switching language then the parameter $lang=en or $lang=he is being added.

Hope this makes sense, and thanks a lot!

this is the code that is responsible for the redirection:

<?php
if (!isset($_COOKIE["uln"])) : 
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
setcookie('uln', $lang, time()+86400*365, '/', '.domain.com'); // cookie stored for a year
$_COOKIE['uln'] = $lang;
endif;

//if lang=(value) is not empty 

if(isset($_GET['lang'])) {
$lang = $_GET['lang'];

 setcookie('uln', $lang, time()-1, '/', '.domain.com');  //this unsets the cookie for random language selection

 //set the cookie "uln" again with the selected language.
 setcookie('uln', $lang, time()+86400*365, '/', '.domain.com'); // cookie stored for a year 
 $_COOKIE['uln'] = $lang;
}



        if(($_COOKIE["uln"]) == "en") {
        $matched = strncmp("/en/", $_SERVER['REDIRECT_URL'], 3);                               
        if ($matched !== 0) :       
        header('Location: /en'.$_SERVER['REQUEST_URI']);        
        endif;
   } elseif(($_COOKIE["uln"]) == "he") {
        $matched = strncmp("/en/", $_SERVER['REDIRECT_URL'], 3);                               
        if ($matched === 0) :       
        header('Location: '.$_SERVER['SERVER_NAME'].'/'.$_SERVER['REQUEST_URI']);       
        endif;
   } 

 ?>  
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.405252 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO