webForumDet fria alternativet

Hjälp med seo och .htaccess

PHP

2 svar · 786 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#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';
}
?>
Medlem sedan jan. 2005953 inlägg
#2

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?

Medlem sedan dec. 20011 860 inlägg
#3

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

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)