Hello,
I will tell you whant I want to do first and what I've done so far and hopefuly someone will be able to help.
What I hope for is to have one unique index.php that will work everywhere. I don't mind if I have to modify each and add path where it is located since this won't happen often.
It needs to take car of preferred language and if someone land in a directory, I want it to load the index.php there.
I also look to not expose hidden URL in the browser URL box. See *note 1 below.
My directory structure is as follow:
/index.php
/about/index.php
/blahblah/index.php
The current index.php I'm trying to build looks like this:
<?php
if (preg_match('/^www.(.+)$/i', $_SERVER['HTTP_HOST'], $matches)) {
header("Status: 301 Move permanently", false, 301);
header('Location: http://'.$matches[1].$_SERVER['REQUEST_URI']);
exit;
}
session_start();
$Lang = $_SESSION['lang'];
if (!isset($Lang))
{
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$Lang = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$Lang = strtolower(substr(chop($Lang[0]),0,2));
if ($Lang !== 'fr' && $Lang !== 'en')
{
$Lang = "en";
}
}
else
{
$Lang = "en";
}
$_SESSION['lang'] = $Lang;
}
include $_SERVER["DOCUMENT_ROOT"] . ("/index_" . $_SESSION['lang'] . ".php");
?>
First I remove "www." in the address when applies. Not a must but I like that.
Then I check if Language is already set, if not I detect and set it for next pages.
I finally load the proper page according to language with an "include" so index_en.php remain secret (sort of).
*note 1: all my index_xx.php pages in every directory have this:
<script language="javascript" type="text/javascript">
if (self == top)
top.location.href="directory/index.php";
</script>
When in the root, it seems to work and I get the proper page but if I place this in /about/ then when I tried to load /about/index.php it doesn't work. I think the include on the last line could be the problem.
I'm either close or far from it, I don't know.
Thank you.