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
<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
<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