SEO Pagination

kurtparis

Erfahrenes Mitglied
Hallo !
Ich habe das (modifizierte) pagination script von Dreamweaver
Code:
<?php if ($pageNum_hotels > 0) { // Show if not first page ?>
      <a href="<?php printf("%s?pageNum_hotels =%d%s", $currentPage, 0, $queryString_hotels ); ?>">erste Seite  </a>&nbsp;
      <?php } // Show if not first page ?>
    <?php 
  $last=$totalPages_hotels +1;
  $current=$pageNum_hotels +1;
  for ($i = 1; $i <= $last; $i++) {
      if($current==$i){
   echo "<strong> ". $i . "</strong> | ";
   } else { ?>
    <a href="<?php printf("%s?pageNum_hotels =%d%s", $currentPage, min($totalPages_hotels , $i-1), $queryString_hotels ); ?>"><?php echo $i;?></a><?php echo " | "; ?>
    <?php
   }
  }
  ?>
    <?php if ($pageNum_hotels  < $totalPages_hotels ) { // Show if not last page ?>
      <a href="<?php printf("%s?pageNum_hotels =%d%s", $currentPage, $totalPages_hotels , $queryString_hotels ); ?>">letzte Seite </a>
      <?php } // Show if not last page ?>

versucht so umzubauen das es SEO-URLs ausgiebt
Also anstatt z.B. statt
hotels-in-frankreich.php?pageNum_hotels=1&totalRows_hotels=16
die "hübschere" URLs
hotels-in-frankreich.html
hotels-in-frankreich-urlaub-1.html

Da ich kein Ass in Sachen PHP bin kam ich auf folgende (vieleicht etwas amateurhafte ?) Version :
Code:
<?php 
	 $first="hotels-in-frankreich.html";
	 $alt="hotels-in-frankreich.php";
	 $neu="hotels-in-frankreich-urlaub-";
	 $extension=".html"; 
  $CurrentPage=str_replace($currentPage, $alt, $neu );
 $QueryString_hotels=substr_replace($queryString_hotels, '', 0, -10);  ?> 

	
      <?php if ($pageNum_hotels > 0) { // Show if not first page ?>
        <a href="<?php printf("$first", $CurrentPage, 0, $QueryString_hotels); ?>">erste Seite </a>&nbsp;
        <?php } // Show if not first page ?>
      <?php 
  $last=$totalPages_hotels+1;
  $current=$pageNum_hotels+1;
  for ($i = 1; $i <= $last; $i++) {
      if($current==$i){
   echo "<strong> ". $i . "</strong> | ";
   } else { ?>
      <a href="<?php printf("%s%d%s$extension", $CurrentPage, min($totalPages_hotels, $i-1), $QueryString_hotels); ?>"><?php echo $i;?></a><?php echo " | "; ?>
      <?php
   }
  }
  ?>
      <?php if ($pageNum_hotels < $totalPages_hotels) { // Show if not last page ?>
        <a href="<?php printf("%s%d%s$extension", $CurrentPage, $totalPages_hotels, $QueryString_hotels); ?>">letzte Seite </a>
        <?php } // Show if not last page ?>

die auch mittels volgender .htaccess anweisung:
Code:
RewriteRule ^hotels-in-frankreich\.html      hotels-in-frankreich.php
RewriteRule ^hotels-in-frankreich-urlaub-([0-9]*)\.html  hotels-in-frankreich.php?pageNum_hotels=$1 [L]
RewriteRule ^hotels-in-frankreich\.html      hotels-in-frankreich.php[R=301,L]

zu funktionieren scheint

Es gibt allerdings 1 Problem
Wenn ich z.B. auf der 2. (3.,4 ..) Seite bin, gibt mir mein Script für den Link "erste Seite" die gewünscht URL "hotels-in-frankreich.html" aus alllerdings der Link "1" (was ja die gleiche Seite ist) die URL "hotels-in-frankreich-urlaub-0.html" was für Suchmaschienen wohl Doppel-Conent erzeugt.

Also Hier meine Frage:
Wie kann ich das PHP-Script so umbauen das sowohl der Link "erste Seite" als auch der Link "1" die URL
"hotels-in-frankreich.html" ausgiebt ?
 
Keiner eine Idee ?

Eigentlich geht es darum, wenn die Zeile :
Code:
<a href="<?php printf("%s%d%s$extension", $CurrentPage, min($totalPages_hotels, $i-1), $QueryString_hotels); ?>">

die URL "hotels-in-frankreich-urlaub-0.html" ausgeben würde und nur dann diese durch "hotels-in-frankreich.html" zu ersetzen !

Gibt es irgendeine möglichkeit einen str_replace oder sowas in diese code-Zeile einzubauen ?
 
Ich glaub ich versteh deine Frage nur halb
PHP:
<a href="<?php
    if ($i-1 == 0) {
        echo "irgendwas";
    } else {
        echo "wasanderes";
    }
?>">

Sorry, hab grad keine Zeit den ganzen Formatierungsstring auszubrösmeln um die genaue Formatierung zu definieren
 
@kurt: aufgrund deines letzten Beitrages:
versuch mal preg_replace()

den ersten Beitrag wird keiner lesen wollen denn in PHP-Tags wäre es leserlicher
 
Sorry hatte nicht gesehen das es hier einen BBcode für php gibt:

Also nochmal das wesentliche:

der php Code-Teil:
PHP:
  <?php 
  $last=$totalPages_hotels+1;
  $current=$pageNum_hotels+1;
  for ($i = 1; $i <= $last; $i++) {
      if($current==$i){
   echo "<strong> ". $i . "</strong> | ";
   } else { ?>
      <a href="<?php printf("%s%d%s$extension", $CurrentPage, min($totalPages_hotels, $i-1), $QueryString_hotels); ?>"><?php echo $i;?></a><?php echo " | "; ?>
      <?php
   }
  }
  ?>

gibt mir die URL's
hotels-in-frankreich-urlaub-0.html unter Link "1 |"
hotels-in-frankreich-urlaub-1.html unter Link "2 |"
hotels-in-frankreich-urlaub-2.html unter Link "3 |"

usw. wie genünscht aus.
Das Problem ist das die
URL "hotels-in-frankreich-urlaub-0.html"
und die
URL "hotels-in-frankreich.html"
die gleiche Seite ergeben da ich mit dem Code
PHP:
 <?php 
	 $first="hotels-in-frankreich.html";
	 $alt="hotels-in-frankreich.php";
	 $neu="hotels-in-frankreich-urlaub-";
	 $extension=".html"; 
  $CurrentPage=str_replace($currentPage, $alt, $neu );
 $QueryString_hotels=substr_replace($queryString_hotels, '', 0, -10); ?> 

	
      <?php if ($pageNum_hotels > 0) { // Show if not first page ?>
        <a href="<?php printf("$first", $CurrentPage, 0, $QueryString_hotels); ?>">erste Seite </a>&nbsp;
        <?php } // Show if not first page ?>

schon unter dem Link "erste Seite" die URL "hotels-in-frankreich.html" erzeuge.

Ich suche also eine Möglichkeit um unter der Linkausgabe "1|" die URL "hotels-in-frankreich-urlaub-0.html " auf die URL "hotels-in-frankreich.html"
zu ändern das heisst wohl in folgendem Teil des Cods :
PHP:
<a href="<?php printf("%s%d%s$extension", $CurrentPage, min($totalPages_hotels, $i-1), $QueryString_hotels); ?>"><?php echo $i;?></a><?php echo " | "; ?>

habe es mit preg_replace() versucht, da ich allerdings eher mässige PHP Synaxt Kentnisse habe komme ich auf keine brauchbare Lösung
 
Danke

%s%s$extension

funktioniert zwar genauso, löst mein Problem allerdings nicht !

Da er genauso für die Links

1|2|3| ...

hotels-in-frankreich-urlaub-0.html
hotels-in-frankreich-urlaub-1.html
hotels-in-frankreich-urlaub-2.html usw. ausgiebt, was für 2|3| ... auch gewünscht ist, nur für Link "1|" bräuchte ich eben
hotels-in-frankreich.html als Ausgabe-Link
 
Wie wärs damit? Eine Umsetzung von meinem obigen Beitrag:
PHP:
<?php
	$nr = min($totalPages_hotels, $i-1;
	if($nr==0){
		$link = $first;
	} else {
		$link = sprintf("%s%d%s$extension", $CurrentPage, $nr, $QueryString_hotels);
	}
	echo "<a href=\"{$link}\">{$i}</a> | ";
?>
 
Mmm, Im Prinzip scheint dein Code zu funktionieren
Alllerdings wenn ich meinen Code (hier nochmal ganz)
PHP:
<?php if ($pageNum_hotels > 0) { // Show if not first page ?>
        <a href="<?php printf("$first", $CurrentPage, 0, $QueryString_hotels); ?>">erste Seite </a>&nbsp;
        <?php } // Show if not first page ?>
      <?php 
  $last=$totalPages_hotels+1;
  $current=$pageNum_hotels+1;
  for ($i = 1; $i <= $last; $i++) {
      if($current==$i){
   echo "<strong> ". $i . "</strong> | ";
   } else { ?>
      <a href="<?php printf("%s%s$extension", $CurrentPage, min($totalPages_hotels, $i-1), $QueryString_hotels); ?>"><?php echo $i;?></a><?php echo " | "; ?>
      <?php
   }
  }
  ?>
durch deinen (ab "$last=$totalPages_hotels+1;")
PHP:
<?php
    $nr = min($totalPages_hotels, $i-1;
    if($nr==0){
        $link = $first;
    } else {
        $link = sprintf("%s%d%s$extension", $CurrentPage, $nr, $QueryString_hotels);
    }
    echo "<a href=\"{$link}\">{$i}</a> | ";
?>

ersetze geht mir das Paging (2|3|4 ... ) verloren

Versuche weiter zu basteln, jedenfalls Danke für deine Hilfsbereitschaft !
 
Du hast zu viel ersetzt:
PHP:
<?php 
	if ($pageNum_hotels > 0) { // Show if not first page 
?>
		<a href="<?php printf("$first", $CurrentPage, 0, $QueryString_hotels); ?>">erste Seite </a>&nbsp;
<?php 
	} // Show if not first page 
	$last=$totalPages_hotels+1;
	$current=$pageNum_hotels+1;
	for ($i = 1; $i <= $last; $i++) {
		if($current==$i){
			echo "<strong> ". $i . "</strong> | ";
		} else { 
			$nr = min($totalPages_hotels, $i-1;
			if($nr==0){
				$link = $first;
			} else {
				$link = sprintf("%s%d%s$extension", $CurrentPage, $nr, $QueryString_hotels);
			}
			echo "<a href=\"{$link}\">{$i}</a> | "; 
		}
	}
?>
 
Zurück