Suchmaschinenfreundliche Urls

  • Hi,


    urls wie http://domain.com/index.php?page=home geltens als nicht suchmaschinenfreundlich, bieten jedoch den Vorteil daß man leicht mit $_GET auf die Parameter zugreifen kann. Möchte man eine suchmaschinenfreundliche url kann man mit Segmenten arbeiten, die url sieht dann so aus: http://domain.com/index.php/home/
    Man kann es zwar mittels .htaccess umd mod_rewrite machen, aber es funktioniert bei manchen kostenlosen Hostingpaketen nicht.
    Mir geht es um eine Lösung die nur mit PHP auskommt. Mein erster Ansatz ist:


    index.php

    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /><br />    $base_url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"http://localhost:8080/projects/Routing/"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    <br />    $ext </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">".php"</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">?><br /></span><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><br /><html><head><br /><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><br /><title>Clean Urls</title><br /><style type="text/css"><br />* {<br />    margin: 0px;<br />    padding: 0px;<br />}<br />body {<br />    font-size: 18px;<br />    font-family: Arial,Helvetica,sans-serif;<br />    text-align: center;<br />}<br />#page {<br />    width: 900px;<br />    margin: 10px auto;<br />}<br />#header {<br />    background-color: #5e0022;<br />}<br />h1 {<br />    font-family: "Times New Roman",Times,serif;<br />    font-size: 50px;<br />    font-weight: bold;<br />    color: #cccccc;<br />    font-style: italic;<br />    text-align: left;<br />    margin-left: 10px;<br />}<br />#content {<br />    padding: 10px;<br />    background-color: white;<br />    margin-bottom: 5px;<br />    text-align: justify;<br />    min-height: 400px;<br />}<br />#navi {<br />    background-color: #cacacb;<br />    margin-bottom: 5px;<br />    padding-top: 5px;<br />    padding-bottom: 5px;<br />    text-align: right;<br />    overflow: auto;<br />}<br />#navi li {<br />    margin: 5px 5px 5px 10px;<br />    list-style-type: none;<br />    float: left;<br />}<br />#navi li a {<br />    color: #5e0022;<br />    text-decoration: none;<br />    display: block;<br />}<br />#navi li a:hover {<br />    color: #000066;<br />}<br />#footer {<br />    border-top: 1px solid silver;<br />    text-align: left;<br />    padding-top: 5px;<br />    margin-top: 5px;<br />    color: #666666;<br />    padding-left: 10px;<br />}<br /></style></head><br /><body><br />    <div id="page"><br />        <div id="header"><br />            <h1>CyberGirl's Demo</h1><br />        </div><br />        <div id="navi"><br />            <ul> <br />                <li><a href="<span class="syntaxdefault"><?php echo $base_url</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">?></span>index.php/home/">Home</a></li> <br />                <li><a href="<span class="syntaxdefault"><?php echo $base_url</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">?></span>index.php/about/">About</a></li><br />                <li><a href="<span class="syntaxdefault"><?php echo $base_url</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">?></span>index.php/links/">Links</a></li> <br />                <li><a href="<span class="syntaxdefault"><?php echo $base_url</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">?></span>index.php/contact/">Contact</a></li><br />            </ul><br />        </div><br />        <div id="content"><br />        <span class="syntaxdefault"><?php<br />            require_once</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"url_helper.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">            $page </span><span class="syntaxkeyword">=</span><span class="syntaxdefault">  get_url_segment</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">            if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$page </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                $page </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> $ext</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            else<br />            </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                $page </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"home.php"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            </span><span class="syntaxcomment">/* In a real application we would check if the requested page exists<br />             *    and use include() to load the content, but in this demonstration <br />             * we just echo the page name.<br />             */<br /></span><span class="syntaxdefault">        <br />            echo </span><span class="syntaxstring">"<h2>"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $page </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">"</h2>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        <br />        ?><br /></span>        </div><br />        <div id="footer">Footer</div><br />    </div> <br /></body><br /></html><br /></span>


    url_helper.php

    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /><br /></span><span class="syntaxcomment">/**<br />* Returns the segment of the url or an empty string if it doesn't exist.<br><br />* Bsp: Bei der gegebenen url http://www.domain.com/index.php/home/<br />*      get_url_segment(0) returns "home"<br />* <br />* @param index $index Zero based index of the segment<br />* @return string <br />*/<br /><br /></span><span class="syntaxdefault">function get_url_segment</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$index</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    $url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'REQUEST_URI'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">    $segment_start </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> strpos</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'REQUEST_URI'</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxstring">"index.php"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> strlen</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"index.php/"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    $segments</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    <br />    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$segment_start </span><span class="syntaxkeyword"><</span><span class="syntaxdefault"> strlen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        $segments </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $segment_start</span><span class="syntaxkeyword">));<br /></span><span class="syntaxdefault">        if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">count</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$segments</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">>=</span><span class="syntaxdefault"> $index</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            return $segments</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$index</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    return </span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        <br />    <br /></span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">?><br /></span></span>


    Mich würde Eure Meinung dazu interessieren.
    LG

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!