Datei URL der Website verstecken / verstecken

1965
mk12

Einige Websites, egal auf welcher Seite, zeigen immer nur ihren Domainnamen in der Adressleiste an, und nichts anderes.

Viele zeigen die Ordner an, z. B. https://superuser.com/questions/ask, zeigen jedoch nicht die eigentliche Datei an http://domain.tld/folder/file.extension.

Wie werden beide erreicht?

3

3 Antworten auf die Frage

9
Josh Hunt

Dies liegt an einem Missverständnis darüber, was eine URL eigentlich ist, was wahrscheinlich durch die Tage der statischen .HTML-Dateien und PHP-Skripte geholfen wird.

Traditionell ist alles, was hinter der TLD liegt, ein Zeiger auf eine bestimmte Datei. Angenommen, ein Blogpost befindet sich unter example.com/blog/2009/oct/18/what-have-we-come-to. Ohne die Verwendung von ausgefallenen Techniken würde dies bedeuten, dass es einen Ordner mit dem Namen blog gibt, und zwar einen 2009Ordner, und zwar einen Ordner für jeden Monat und in diesen Ordnern einen anderen Ordner für jeden Tag des Monats. Natürlich wird dies sehr schnell sehr kompliziert.

Aus diesem Grund haben Webserver (wie Apache) und Programmiersprachen (wie PHP) das Umschreiben von URLs erfunden . Das bedeutet, dass die genannte URL in etwas überschaubarer umgewandelt wird, z example.com/blog/articles.php?id=423. B.. Hier verwendet ein articles.phpSkript die bereitgestellte Beitrags-ID, um den zutreffenden Beitrag nachzuschlagen. Anschließend wird der Beitrag angezeigt, aber der Benutzer würde die URL trotzdem als anzeigen example.com/blog/2009/oct/18/what-have-we-come-to.

Bei einem anderen Ansatz wird dies alles völlig verworfen. Alles nach der TLD (in diesem Fall /questions/56772/website-url-hiding-hiding-file) ist lediglich ein Hinweis auf den Inhalt und nicht notwendigerweise eine Datei. Einige Websites, beispielsweise Super User, basieren auf einem MVC-Ansatz (Model-View-Controller). Normalerweise umfasst dies eine Liste von URLs für eine Website und ordnet diese den entsprechenden Funktionen und dem entsprechenden Code zu, um diese Seite anzuzeigen. Zum Beispiel könnte Super User so aussehen 1 :

'superuser.com/' > displayFrontPage() 'superuser.com/questions/' > displayQuestionsList(sorted=default) 'superuser.com/questions/<QuestionID>/<QuestionID>' > displayQuestion(question= QuestionID) 

Dies wird meistens in einer Datei abgelegt. Ich könnte ein allgemeines Layout sein:

superuser/ controller.aspx (which contains the list of URLs and points to a view in views.aspx) views.aspx (which contains all the code for the superuser, such as displayFrontPage() and displayQuestion(question= QuestionID)) models.aspx (which contains information about the table in the database.) 

1 Bitte denken Sie daran, dass ich keine Ahnung habe, wie der Controller für ASP MVC funktioniert (ich bin eher ein Django-Typ), so dass dies wahrscheinlich nicht so genau ist. Es ist nur ein Beispiel

Wo würde dieser Code platziert werden? mk12 vor 14 Jahren 0
Dies hängt von der Serverkonfiguration oder dem tatsächlich verwendeten Framework ab. Ich werde meine Frage entsprechend aktualisieren. Josh Hunt vor 14 Jahren 0
Was ist mit Google, zum Beispiel google.com/search?client=safari&rls=de&q=superuser&ie=UTF-8&oe=UTF-8, hat die Suche keine Dateierweiterung… mk12 vor 14 Jahren 0
@ Mk12: Der Programmierer kann eine beliebige URL verwenden, die er / sie möchte. Ich könnte eine Webanwendung schreiben, die ".php" am Ende jeder URL anfügt, obwohl tatsächlich keine PHP-Dateien auf dem Server vorhanden sind. Also entschied sich Google, einfach "search" ohne Erweiterung zu verwenden. Sie hätten so etwas tun können, wenn sie gewollt hätten (und daran hätte sich auch nichts geändert): `google.com / search / client = safari / q = superuser /` Sasha Chedygov vor 14 Jahren 0
Wie auch immer, +1, gute Beschreibung. Sasha Chedygov vor 14 Jahren 0
+1, aber beachten Sie, dass es im Ordnerbeispiel eine index.html / php / what gibt (wenn der Server nicht für die Verwendung eines anderen Standarddateinamens konfiguriert ist, hätte er dies) Phoshi vor 14 Jahren 0
Bei @ Mk12 und @musicfreak ändert Google diese URL in http://www.google.com/#client=safari&q=superuser ;-). Siehe http://stackoverflow.com/questions/1122523/google-using -instead-of-search-in-url-warum Arjan vor 14 Jahren 0
Das funktioniert nur bei Firefox für mich, auf Safari noch "Suche?". mk12 vor 14 Jahren 0
Mk12: Siehe die Frage, mit der Arjan verlinkt hat. Google testet dies immer noch bei bestimmten Personen / Märkten Josh Hunt vor 14 Jahren 0
1

Die Datei ist eine Standardeinstellung, wie in der Webserver-Konfiguration definiert, oder es wird die URL neu geschrieben (der Ordnerpfad ist möglicherweise nicht vorhanden).

Hoppla ... Ich habe vergessen, die Frage nur mit dem Domänennamen zu beantworten ... Dies kann durch Verwenden eines Framesets und nur das Anzeigen des Frames des Inhalts erfolgen. vor 14 Jahren 0
Sie können Ihre Antwort bearbeiten, anstatt einen Kommentar zu schreiben. Sasha Chedygov vor 14 Jahren 0
IIRC, eine Person mit einem Ruf von 1 kann ihre eigenen Beiträge nicht bearbeiten. CarlF vor 14 Jahren 0
Dort kann er bearbeiten! Abs, würden Sie etwas dagegen tun, Ihre Antwort mit dem Kommentar zu bearbeiten? Josh Hunt vor 14 Jahren 0
0
mk12

Was ich wirklich gesucht habe, ist folgendes: Erstellen Sie einfach ein Verzeichnis, haben Sie index.php / html im Ordner, und Links zu diesem Verzeichnis werden die Datei nicht anzeigen. Danke auch für die anderen Dinge.

Das ist wirklich mehr ein Hack ... Url-Umschreiben oder Inhaltszeiger sind häufiger, wie sie erreicht werden Chris Thompson vor 14 Jahren 1