2017-01-03 2 views
2

Ok das ist etwas, das mich für eine Weile jetzt verrückt macht. Es gibt viele Informationen darüber, wie URLs mit Hilfe von .htaccess-Dateien neu geschrieben werden können. Aber aus irgendeinem Grund habe ich nach stundenlangem Versuch immer noch keine Wirkung auf meine URLs erzielt. Ich habe versucht, Anweisungen in die apache2.conf zu verschieben, immer noch kein Glück. Ich bin nicht großartig im Server-Admin-Zeug, aber ich komme dorthin. Ich merke aber, dass Tonnen von Websites da draußen, die wahrscheinlich von Web-Designern usw. WordPress-Websites gebaut oder was Sie haben, auch sie haben saubere URLs.Umschreiben der URL Apache

So AFAIK alles, was ich tun muss, ist in einer dieser Mod Rewrite-Regeln einfügen, z.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

in eine Datei namens .htaccess in meinem public_html -Verzeichnis. Aus irgendeinem Grund funktioniert das nicht für mich. Ich benutze digital Ocean, also gibt es eine Chance, dass ich einen entscheidenden Schritt bei der Einrichtung meines LAMP-Servers verpasst habe, da ich sagte, dass ich immer noch mit dem Serveradministrator fertig werde. Jede Hilfe oder Vorschläge sehr geschätzt!

+0

Was genau meinen Sie mit "saubere URLs"? .php zeigt nicht am Ende? Dinge wie site.com/home verweisen auf home.php, site.com/faq auf faq.php und so weiter, aber ohne Ordner? Die Websites, die Sie erwähnen, haben wahrscheinlich URLs wie diese, weil sie Frameworks oder CMS verwenden und dynamische Daten haben, nicht nur um gut auszusehen. – aron9forever

+0

Ihr .htaccess funktioniert gut für mich. Welchen Fehler bekommst du? – Rei

+0

Ich spreche über jede Art von Neuschreiben. Vom Entfernen einer .php zum Umleiten einer alten Seite – Felix

Antwort

0

Bei den meisten PHP-Frameworks (WordPress, Laravel usw.) werden alle URL-Anfragen, die keine "echten" Verzeichnisse oder Dateien sind, zu einem einzigen Einstiegspunkt umgeleitet. z.B. index.php, Wo die Anfrage verarbeitet wird und die Seite entsprechend angezeigt wird.

Hier ist ein einfaches Beispiel, in dem alle Anforderungen, die nicht unbedingt die Verzeichnisse oder Dateien sind zu index.php umgeleitet und verarbeitet:

.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [NC,L] 

index.php

<?php 

switch($_SERVER['REQUEST_URI']) { 
    default: 
     echo "404: Page cannot be found"; 
     break; 
    case 'page1': 
     echo "This is page 1"; 
     break; 
    case 'page2': 
     echo "This is page 2"; 
     break; 
    case 'page3': 
     echo "This is page 3"; 
     break;  
} 

Also, wenn Sie gehen zu http://somedomain.com/page1 wird es zeigen "Dies ist Seite 1 ". Wenn Sie zu http://somedomain.com/page4 gehen, zeigt es "404: Seite kann nicht gefunden werden".

+1

Das ist das Designmuster des Frontcontrollers. Alle Anfragen werden von einem einzigen Controller bearbeitet (https://en.wikipedia.org/wiki/Front_controller) –