Visa ett inlägg
Oläst 2008-04-02, 10:51 #6
objx objx är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 154
objx objx är inte uppkopplad
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!
objx är inte uppkopplad   Svara med citatSvara med citat