SEO Urls V2

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
IPB_Flüchtling
Mitglied
Beiträge: 1862
Registriert: 23.12.2004 22:46

Beitrag von IPB_Flüchtling » 04.07.2006 05:12

mgutt hat geschrieben:@ IPB_Flüchtling

wenn ich dich nicht hätte :oops:
Was soll denn dann ich erst sagen? :roll: :wink:
Installationsanleitung aus dem Downloadpaket im ersten Beitrag hat geschrieben:If your forum runs in the folder "phpBB2" (http://mydomain.com/phpBB2/index.php) you need to copy the files of the folder "phpBB_in_folder" to your root (http://mydomain.com/robots.txt).
Ganz genau so klappt es - und es hat den nicht zu unterschätzenden Vorteil, dass man die Rewrite-Regeln fürs Forum einfach in eine eventuell schon bestehende .htaccess integrieren kann. :P

Ja ja, Modrewrite ist schon lustig: Gestern habe ich entdeckt, dass larbin meinen kleinen Webkatalog auf phpLD-Basis von vorne bis hinten gecrawlt hat, obwohl ich den Bot in der Root-htaccess gesperrt habe. Zugriff hatte er, weil im Webkatalog-Ordner ebenfalls eine kleine .htaccess liegt, welche die Antibot-Regeln in der Root-htaccess haben unwirksam werden lassen:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^Deutschland(.*) index.php
RewriteRule ^Oesterreich(.*) index.php
RewriteRule (.*)Seite(.*)\.html$ $1/?p=$2 [PT]
Du brauchst jetzt aber nicht glauben, dass es mir gelungen wäre, diese paar Zeilen erfolgreich in die Root-htaccess zu integrieren. :oops:

Wenn ich mal mehr Zeit, probiere ich es noch einmal - ansonsten wird es halt ein Fall für Bob (wenn er noch einmal hilft). :oops:

LG, IPB_Flüchtling

Benutzeravatar
Beagleman
Mitglied
Beiträge: 126
Registriert: 30.06.2006 14:07
Kontaktdaten:

Beitrag von Beagleman » 04.07.2006 15:08

Hmmm...

mit der aktuellen session.php bekomme ich jetzt aber Probleme.

Code: Alles auswählen

// Avoid double content on index page
		elseif ( $url == "index.$phpEx" )
		{
			return './';
		}
Ich habe nicht die Index-Seite, sondern eine Portal-Seite als Start-Seite. Durch obigen Code wird nun auch die Foren-Übersicht, also index.php, auf die Portal-Seite umgeleitet.

Ist obiger Code wirklich notwendig, um doppelten Content zu vermeiden?
Zuletzt geändert von Beagleman am 19.08.2006 19:50, insgesamt 1-mal geändert.

Malz
Mitglied
Beiträge: 195
Registriert: 30.05.2006 22:26

Beitrag von Malz » 04.07.2006 16:42

Was noch fehlen würde ist ein addon für den SimpleSub Forums Mod. Da die URL nicht bzw. falsch umgeschrieben/zugeordnet werden. :(

fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg » 04.07.2006 17:01

Malz hat geschrieben:Was noch fehlen würde ist ein addon für den SimpleSub Forums Mod. Da die URL nicht bzw. falsch umgeschrieben/zugeordnet werden. :(
Ehm ja muss ich mal gucken wie ich das gemacht habe.. ich habe auch Simple Subforums und da wars schon ne Runde komplizierter das umuzuschreiben.

Auf jeden Fall die Funktion append_sid von mgutt mit dieser hier ersetzen:

Code: Alles auswählen

function append_sid($url, $non_html_amp = false, $forum = false, $topic = false)  // Seo Urls Anfang Version 1.1.7 
{ 
   global $SID, $phpEx, $topic_title, $forum_name; 
   if( !empty($forum) )
   {
	   $forum_name = $forum;
   }
   
   if( !empty($topic) )
   {
   	   $topic_title = $topic;
   }	   

	// if url contains a session we won't rewrite
	if ( !empty($SID) && !preg_match('#sid=#', $url) )
	{
		$url .= ( ( strpos($url, '?') !== false ) ?  ( ( $non_html_amp ) ? '&' : '&' ) : '?' ) . $SID;
		return $url;
	}
	if( ($url == "index.$phpEx" or $url == "index.html") && !eregi('sid=', $url))
	{
		$url = './';
	}	

	//
	// USERSETTINGS BEGIN
	//

	// replace "true" with "false" to deactivate seo urls
	$seo_active = true;

	// Disallow rewritting for:
	// - specific url parms (f.e. 'mode=confirm', )
	// - files (f.e. "memberlist.$phpEx", )
	// - folders (f.e. 'includes/', )
	//
	$seo_forbidden = array(
		'login',
		'mode=confirm',
		'mark=topics',
		'view=',
	);

	//
	// USERSETTINGS END
	//

	// start rewritting if allowed
	if ( $seo_active )
	{
		foreach ( $seo_forbidden as $forbidden )
		{
			if ( $url == $forbidden || strpos($url, $forbidden) !== false )
			{
				$seo_active = false;
				break;
			}
		}
	}
	if ( !$seo_active || $url == './' )
	{
		return $url;
	}
	elseif ( $seo_active && !defined('IN_ADMIN') )
	{
		// Hash Fix: If hash is in the given URL it is seperated. This is caused by some incompatibility of some false written mods
		if (strpos($url, '#') !== false)
		{
			$hash = strstr($url, '#');
			$url = substr($url, 0, strpos($url, '#'));
		}
		else
		{
			$hash = '';
		}

		// Title is Array Fix: If topic or forum title is an array it is deleted. This is caused by some incompatibility of some false written mods
		if ( is_array($topic_title) )
		{
			$topic_title = '';
		}
		elseif ( is_array($forum_name) )
		{
			$forum_name = '';
		}

		// Jumpbox Fix
		if ( strpos($url, 'viewforum') !== false && strpos($url, 'f=') === false )
		{
			return $url;
		}

		// Search Author's posts url
		if ( strpos($url, 'search_author') !== false )
		{
			$author_name = substr(strrchr($url, 'search_author='), 14);
			if ( preg_match('#[^_a-zA-Z0-9-.]#', $author_name) )
			{
				return $url;
			}
		}

		// Rewrite url
		$url_amp = ( $non_html_amp ) ? '&' : '&';
		$url_parms = array((strpos($url, 'highlight=') !== false && $url{strlen($url)-1} == '=' ? $url_amp . 'highlight=' : ''),$url_amp . 'start=0',$url_amp . 'postdays=0',$url_amp . 'postorder=asc',$url_amp . 'topicdays=0',".$phpEx?",".$phpEx",'=','&','&','?');
		$url_rparms = array(                                                                                                 '',                  '',                     '',                        '',                      '',       ',',  '.html',',',    ',',',', '');
		$url = str_replace($url_parms, $url_rparms, $url);
		// Double Comma Fix: If a comma is repeated directly after an other the second one is deleted. This is caused by some incompatibility of some false written mods
		$url = preg_replace("#([\,])+#", "\\1", $url);
		// End Comma Fix: If a comma is the last char in the url it is deleted. This is caused by some incompatibility of some false written mods
		$url = rtrim($url, ",");
		// Build url
		$url = $url . ( strpos($url, '.html') !== false ? '' : '.html' );

		// Title to url - forums and topics need special settings
		if ( (!empty($forum_name) || !empty($seo_title) ) && strpos($url, 'viewforum') !== false )
		{
			$seo_title = empty($seo_title) ? $forum_name : $seo_title;
			$seo_base = 'viewforum';
			$seo_search = array($seo_base,'-,f,');
			$seo_replace = array(      '',  '-f');
			$seo_empty = 'forum';
		}
		elseif ( (!empty($topic_title) || !empty($seo_title) ) && strpos($url, 'viewtopic') !== false )
		{
			$seo_title = empty($seo_title) ? $topic_title : $seo_title;
			$seo_base = 'viewtopic';
			$seo_search = array($seo_base,'-,t,','-,p,');
			$seo_replace = array(      '',  '-t',  '-p');
			$seo_empty = 'topic';
		}

		// Title to url - replace special chars and build url
		if ( !empty($seo_base) && !empty($seo_title) && strpos($url, $seo_base) !== false )
		{
			// special chars
			$char_search = array(  'Ö', 'Ä', 'Ü', 'ö', 'ä','à','é','è','í', 'ü', 'ß',' ','.',',','"','&','<', '>',  '+','–','/','_',  '&');
			$char_replace = array('oe','ae','ue','oe','ae','a','e','e','i','ue','ss','-','-','-',      '',  'und',    '',     '','und','-','-','-','und');
			// generate url with title
			$seo_title = str_replace($char_search, $char_replace, strtolower($seo_title) . '-');
			if ( preg_match('#[^a-z0-9-]#', $seo_title) )
			{
				$seo_title = preg_replace('#[^\w- ]#', '', $seo_title);
			}
			// reduce hyphen to one
			$seo_title = preg_replace("#([\-])+#", "\\1", $seo_title);
			// replace empty title if necessary
			$url = $seo_title == '-' ? $seo_empty . $seo_title . $url : $seo_title . $url;
			// clean url
			$url = str_replace($seo_search, $seo_replace, $url);
		}
		// Hash Fix
		$url = $url . $hash;
	}
	if( $url == './index.html' or $url == 'index.html' )
	{
		$url = str_replace('index.html', '', $url);
	}	
	return $url;
} // Seo Urls End 1.1.7
Und den Rest suche ich dann noch zusammen :oops:

Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt » 04.07.2006 17:02

Beagleman hat geschrieben:Hmmm...

mit der aktuellen session.php bekomme ich jetzt aber Probleme.

Code: Alles auswählen

// Avoid double content on index page
		elseif ( $url == "index.$phpEx" )
		{
			return './';
		}
Ich habe nicht die Index-Seite, sondern eine Portal-Seite als Start-Seite. Durch obigen Code wird nun auch die Foren-Übersicht, also index.php, auf die Portal-Seite umgeleitet.

Ist obiger Code wirklich notwendig, um doppelten Content zu vermeiden?
in deinem fall bietet es sich an "portal" einzusetzen. es in dem prinzip einfach nur darum, dass die seiten:
domain.com/index.php
domain.com/
die gleichen Inhalte darstellen.

In Deinem speziellen Fall dürfte das dann gleich sein, nur dass portal.php anstatt index.php eingesetzt wurde.
Malz hat geschrieben:Was noch fehlen würde ist ein addon für den SimpleSub Forums Mod. Da die URL nicht bzw. falsch umgeschrieben/zugeordnet werden. :(
ignorier mal ganz fein den post von fanrpg.. (du hast eine alte version gepostet).

du musst folgendes machen:

mach mal in der index.php aus dem:

Code: Alles auswählen

append_sid ('viewforum.php?f=' . $value['forum_id'] ) 
das:

Code: Alles auswählen

append_sid('viewforum.php?f=' . $value['forum_id'], '', $value['forum_name']) 
in der viewforum.php suchen nach:

Code: Alles auswählen

$attach_forum_link = append_sid('viewforum.php?f=' . $value['forum_id']); 
ersetzen gegen:

Code: Alles auswählen

$attach_forum_link = append_sid('viewforum.php?f=' . $value['forum_id'], '', $value['forum_name']);


dann das:

Code: Alles auswählen

$attach_forum_name = '<a href="' . append_sid('viewforum.php?f=' . $value['forum_id']) . '">' . $value['forum_name'] . '</a>' ; 
gegen das ersetzen:

Code: Alles auswählen

$attach_forum_name = '<a href="' . append_sid('viewforum.php?f=' . $value['forum_id'], '', $value['forum_name']) . '">' . $value['forum_name'] . '</a>' ;
suche nach:

Code: Alles auswählen

'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL ."=$forum_id"),
ersetze gegen:

Code: Alles auswählen

'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL ."=$forum_id", '', $forum_row['forum_name']),
Das müsste es eigentlich gewesen sein.
Zuletzt geändert von mgutt am 05.07.2006 12:40, insgesamt 1-mal geändert.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it

IPB_Flüchtling
Mitglied
Beiträge: 1862
Registriert: 23.12.2004 22:46

Beitrag von IPB_Flüchtling » 04.07.2006 20:45

Malz hat geschrieben:Was noch fehlen würde ist ein addon für den SimpleSub Forums Mod. Da die URL nicht bzw. falsch umgeschrieben/zugeordnet werden.
Ahoi Malz,

den Mod habe ich ja auch! :o Darf man fragen, wie sich die Fehler äußern? Bislang ist mir diesbezüglich eigentlich noch nichts aufgefallen...

Deine Antwort wäre sehr willkommen!
LG, IPB_Flüchtling

Malz
Mitglied
Beiträge: 195
Registriert: 30.05.2006 22:26

Beitrag von Malz » 04.07.2006 22:05

Also

Klicke ich auf die Hauptkategorie "Pocketbikes" kommt:
http://grosshandelskaufleute.cnhost.de/ ... bd7d1a4a0d

Klicke ich auf eine der Beiden Sub Kategorien z.B. "Luftgekühlt" kommt:
http://grosshandelskaufleute.cnhost.de/ ... es-f3.html

Bei den Themen ist es dann wieder richtig!
--------------------------------------------------------------------------------------

Müsste doch normal sein das wenn ich auf Pocketbikes klicke das kommt:
http://grosshandelskaufleute.cnhost.de/ ... es-f*.html

Und bei "Luftgekühlt" sollte das kommen:
http://grosshandelskaufleute.cnhost.de/ ... lt-f*.html


grüße Malz

IPB_Flüchtling
Mitglied
Beiträge: 1862
Registriert: 23.12.2004 22:46

Beitrag von IPB_Flüchtling » 04.07.2006 22:35

Ahoi Malz,

dieser Fehler tritt bei mir nicht auf... Bei mir wird alles schön umgeschrieben, so wie es sich gehört. Habe natürlich 2.0.21 und die neuesten Versionen des "Simple Subforums"-Mods (in Verbindung mit dem "Keep Unread Flags"-Mod) sowie von mgutts SEO-URLs-Mod.

Seltsam, seltsam...
LG, IPB_Flüchtling

Malz
Mitglied
Beiträge: 195
Registriert: 30.05.2006 22:26

Beitrag von Malz » 04.07.2006 22:39

Hmmm :(

Nutze auch die Aktuellen Versionen von phpbb und dem Simple Subforum Mod nur den "Keep Unread Flags"-Mod habe ich nicht eingebaut.

IPB_Flüchtling
Mitglied
Beiträge: 1862
Registriert: 23.12.2004 22:46

Beitrag von IPB_Flüchtling » 04.07.2006 22:53

Der Keep Unread Flags-Mod ist auch etwas ganz anderes - daran kann es eigentlich nicht liegen.

Ich verstehe es wirklich nicht, weshalb dieses Problem bei Dir auftritt. Du hast ja alle Veränderungen gemacht, die im Downloadpaket (siehe 1. Posting dieses Threads) beschrieben werden?!

Weshalb wird bei Dir bei diesen Foren eine Session-ID angehängt? Das dürfte nicht sein, wenn Du mgutts Änderungen befolgt hast/hättest! Soweit ich mgutts Mod verstanden habe, erfolgt kein URL-Rewriting, sobald eine Session-ID (sid=cc04a413921c44869eb45ebd7d1a4a0d) ins Spiel kommt.

Und nur um ein mögliches Missverständnis auszuräumen: Wir reden hier schon vom Simple Subforums-Mod und nicht vom Easy Subforums-Mod, oder?

Seltsam, seltsam...
LG, IPB_Flüchtling

Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“