Asa Medlem sedan dec. 2001 1 860 inlägg Frågan 19 aug. 2015 12:44 #1 Har en sida där jag ni ska testa lägga in en kod för seo som jag hittat på nätet men verkar som jag inte får det att fungera. Någon som kan säga vad som är felet?
När jag ska in i ex en nyhet som den inte vill visa detta utan är kvar på news.php som /news är kopplad till. Den ska ju alltså via /news/12 gå in via show_news.php?id=12 då men funkar ej :(
Dock funkar den under Nyheter när jag byggt en simpel sida utan några extra funktioner:
http://new.gruvsjo.se
Men när jag ska lägga in i en annan större hemsida så strular det. Kan något på sidan krocka och göra att det inge fungerar?? Har ju massa javascriptfiler och annat på den.
Snälla HJÄLP
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ seo.php [L]
</IfModule>
seo.php
<?php
function parse_path() {
$path = array();
if (isset($_SERVER['REQUEST_URI'])) {
$request_path = explode('?', $_SERVER['REQUEST_URI']);
$path['base'] = rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/');
$path['call_utf8'] = substr(urldecode($request_path[0]), strlen($path['base']) + 1);
$path['call'] = utf8_decode($path['call_utf8']);
if ($path['call'] == basename($_SERVER['PHP_SELF'])) {
$path['call'] = '';
}
$path['call_parts'] = explode('/', $path['call']);
$path['query_utf8'] = urldecode($request_path[1]);
$path['query'] = utf8_decode(urldecode($request_path[1]));
$vars = explode('&', $path['query']);
foreach ($vars as $var) {
$t = explode('=', $var);
$path['query_vars'][$t[0]] = $t[1];
}
}
return $path;
}
$path_info = parse_path();
//echo '<pre>'.print_r($path_info,true).'</pre>';
switch($path_info['call_parts'][0]) {
case 'news':
if(isset($path_info['call_parts'][1])){
$_GET['id'] = $path_info['call_parts'][1];
include 'show_news.php';
}else{
include 'news.php';
}
break;
case 'events':
if(isset($path_info['call_parts'][1])){
$_GET['id'] = $path_info['call_parts'][1];
include 'show_event.php';
}else{
include 'events.php';
}
break;
case 'bands':
if(isset($path_info['call_parts'][1])){
$_GET['id'] = $path_info['call_parts'][1];
include 'show_band.php';
}else{
include 'bands.php';
}
break;
case 'albums':
if(isset($path_info['call_parts'][1])){
$_GET['id'] = $path_info['call_parts'][1];
include 'show_album.php';
}else{
include 'albums.php';
}
break;
default:
include 'index.php';
}
?>
M metalboy Medlem sedan jan. 2005 953 inlägg Koden verkar fungera för mig.
La in följande kod i show_news.php
<?php
print_r($_GET);
Försökte sedan ladda http://localhost/news/12 och får följande utskrift:
Array ( [id] => 12 )
Dvs show_news.php laddas och $_GET['id'] har värdet 12.
Vad händer för dig?
Asa Medlem sedan dec. 2001 1 860 inlägg Man är fortfarande kvar på den sidan /news där alla nyheterna listas. Den vill inte anropa show_news.php
Men däremot om jag skriver /show_news/17 så får man felmeddelande men jag har ju inte med att show_news skall användas. Mysko säger jag :/
Har testat /show_news.php?id=17 och den funkar. Men som sagt så ska den köras när man skriver /news/17