Medlem
|
|
Reg.datum: Mar 2008
Inlägg: 154
|
|
Medlem
Reg.datum: Mar 2008
Inlägg: 154
|
Ibland behöver man en liten hjälp på traven för att lyckas.
Nu är det löst.
För er som dyker på samma problem kommer här min lösning på det hela.
Jag skapade en MySQL-tabell som hade följande struktur:
-------------------------------------------------
CREATE TABLE `redirections` (
`id` mediumint(9) NOT NULL auto_increment,
`host` text,
`path` text,
`query` text,
`redirection` text,
`statuscode` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-------------------------------------------------
I rooten av webbservern lade jag sedan in följande regel i min .htaccess:
-------------------------------------------------
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) - [PT,L]
RewriteRule .*(\?.*) /path-to-error-messages/404.php$1
RewriteRule .* /path-to-error-messages/404.php
-------------------------------------------------
Detta skickar all trafik som inte är en fysisk fil till "/path-to-error-messages/404.php".
Därefter kör jag följande PHP-kod:
-------------------------------------------------
$url = $_SERVER['REQUEST_URI'];
if(isset($_SERVER['SCRIPT_URI'])){
$url = $_SERVER['SCRIPT_URI'];
}elseif(isset($_SERVER['HTTP_HOST']) && isset($_SERVER['REQUEST_URI'])){
$httphost = preg_match("/^http\:\/\/.+/", $_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : "http://".$_SERVER['HTTP_HOST'];
$url = $httphost.$_SERVER['REQUEST_URI'];
}else{
$url = "";
}
$querystring = $_SERVER['QUERY_STRING'];
if(strlen($querystring) > 0){ $url .= "?".$querystring;}
$host = parse_url($url, PHP_URL_HOST);
$path = parse_url($url, PHP_URL_PATH);
$query = parse_url($url, PHP_URL_QUERY);
$redirectioncheck = mysql_query("SELECT * FROM redirections WHERE host='$host' && path='$path' && query='$query'");
if($redirectioncheck && mysql_num_rows($redirectioncheck) > 0){
$redirection = mysql_fetch_object($redirectioncheck);
header("HTTP/1.0 301 Moved Permanently");
header("Location: ".$redirection->redirection);
}else{
header("HTTP/1.0 404 Not Found");
}
-------------------------------------------------
Tack för hjälpen!
|