it-swarm.com.de

Wie entferne ich die Dateierweiterung von der Website-Adresse?

Ich gestalte eine Website. Ich möchte, dass meine Website-Adresse wie folgt aussieht:

file name extensions like (PHP/JSP) are hidden

Ich möchte nicht, dass meine Website wie http://something.com/profile.php .__ aussieht. Ich möchte, dass die Erweiterung .php in der Adressleiste entfernt wird, wenn jemand meine Website öffnet. Mit anderen Worten, ich möchte, dass meine Website wie folgt aussieht: http://something.com/profile

Als zweites Beispiel können Sie sich die Adresse der StackOverflow-Website selbst ansehen. 

Kann mir bitte jemand dabei helfen? Vielen Dank! 

51
Sumit Gupta

Fügen Sie einfach die .htaccess-Datei mit dem folgenden Inhalt zum Stammordner Ihrer Site hinzu (z. B. /home/domains/domain.com/htdocs/):

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
70
Igor

Vergewissern Sie sich zunächst, dass das Modul mod_rewrite installiert ist. Seien Sie dann vorsichtig, um zu verstehen, wie es funktioniert, viele Leute bekommen es rückwärts. 

Sie verbergen keine URLs oder Erweiterungen. Sie erstellen zum Beispiel eine NEUE URL, die auf die alte verweist 

Die auf Ihrer Website angegebene URL lautet yoursite.com/play?m=asdf 

oder noch besser 

yoursite.com/asdf 

Obwohl das Verzeichnis asdf nicht existiert. Wenn Sie mod_rewrite installiert haben, geben Sie dies in .htaccess ein. Grundsätzlich heißt es, wenn die angeforderte URL KEINE Datei und KEIN Verzeichnis ist, leiten Sie sie zu meinem Skript: 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /play.php [L] 

Fast fertig - jetzt müssen Sie nur noch etwas in Ihr PHP Skript schreiben, um die neue URL herauszufinden. Sie möchten dies tun, damit auch die ALTEN funktionieren. Sie müssen ein System verwalten, durch das die Variable immer genau dieselbe ODER - Datenbank-Tabelle erstellt, die die "SEO-freundliche URL" mit der Produkt ID. Ein Beispiel könnte sein 

/ Einige-Cool-Videos (entspricht der Produkt-ID asdf) 

Der Vorteil dazu? Suchmaschinen indizieren die Schlüsselwörter "Some Cool Video". asdf? Wer wird danach suchen? 

Ich kann Ihnen keine genauen Angaben zur Programmierung geben, aber nehmen Sie die Abfragezeichenfolge und entfernen Sie das Ende 

yoursite.com/Some-Cool-Video 

verwandelt sich in "asdf" 

Setzen Sie dann die Variable m auf diese 

m = asdf 

Beide URLs gehen also immer noch auf dasselbe Produkt 

yoursite.com/play.php?m=asdf 
yoursite.com/Some-Cool-Video 

mod_rewrite kann auch viele andere wichtige Dinge tun, Google dafür und es auf Ihrem Server aktivieren (wahrscheinlich bereits installiert).

12
Shiv Singh

Sie haben verschiedene Möglichkeiten . Eine von ihnen erstellt einen Ordner mit dem Namen "profile", benennt Ihre "profile.php" in "default.php" um und legt sie im Ordner "profile" . Ab zu dieser Seite auf diese Weise:

Alte Seite: http://something.com/profile.php?id=a&abc=1

Neue Seite: http://something.com/profile/?id=a&abc=1

Wenn Sie nicht zufrieden sind, hinterlassen Sie einen Kommentar zu komplizierten Methoden.

4
Iman Hejazi

Das Problem bei der Erstellung eines Verzeichnisses und der Beibehaltung der index.php ist das

  1. ihre Links mit Menü funktionieren nicht mehr
  2. Es wird viel zu viele Verzeichnisse geben. Zum Beispiel gibt es hier für stackoverflow für jede Frage ein separates Verzeichnis

Die Lösungen sind 1. MOD REWRITE (wie oben vorgeschlagen) 2. Verwenden Sie einen PHP-Code, um andere Dateien dynamisch in die Indexdatei aufzunehmen. Lesen Sie mehr darüber hier http://inobscuro.com/tutorials/read/16/

2
Rahul Singh

Hier ist eine einfache PHP - Methode, die ich benutze.
Wenn eine Seite mit der Erweiterung ".php" angefordert wird, wird eine neue Anforderung ohne die Erweiterung ".php" erstellt. Die Erweiterung .php wird dann nicht mehr im Adressfeld des Browsers angezeigt. 

Ich habe mir diese Lösung ausgedacht, weil keiner der vielen .htaccess-Vorschläge für mich funktioniert hat und dies schneller in PHP implementiert werden konnte, als herauszufinden, warum der .htaccess auf meinem Server nicht funktioniert hat.

Setzen Sie dies an den Anfang jeder PHP -Datei (vorzugsweise vor etwas anderem):

include_once('scripts.php');  
strip_php_extension();  

Dann fügen Sie diese Funktionen in die Datei 'scripts.php' ein:

//==== Strip .php extension from requested URI  
function strip_php_extension()  
{  
  $uri = $_SERVER['REQUEST_URI'];  
  $ext = substr(strrchr($uri, '.'), 1);  
  if ($ext == 'php')  
  {  
    $url = substr($uri, 0, strrpos($uri, '.'));  
    redirect($url);  
  }  
}  

//==== Redirect. Try PHP header redirect, then Java, then http redirect
function redirect($url)  
{  
  if (!headers_sent())  
  {  
    /* If headers not yet sent => do php redirect */  
    header('Location: '.$url);  
    exit;  
  }  
  else  
  {
    /* If headers already sent => do javaScript redirect */  
    echo '<script type="text/javascript">';  
    echo 'window.location.href="'.$url.'";';  
    echo '</script>';  

    /* If javaScript is disabled => do html redirect */  
    echo '<noscript>';  
    echo '<meta http-equiv="refresh" content="0; url='.$url.'" />';  
    echo '</noscript>';  
    exit;  
  }  
}  

Natürlich müssen Sie noch Apache einrichten, um alle Anforderungen ohne Erweiterung auf die Datei mit der Erweiterung ..__ umzuleiten. Die obige Lösung prüft einfach, ob der angeforderte URI eine Erweiterung hat, ob er den URI ohne die Erweiterung anfordert. Dann führt Apache die Weiterleitung zu der Datei mit der Erweiterung durch, aber im Adressfeld des Browsers wird nur der angeforderte URI (ohne die Erweiterung) angezeigt .. Der Vorteil ist, dass alle Ihre "href" -Links in Ihrem Code noch die haben können vollständiger Dateiname, dh einschließlich der Erweiterung .php.

2
Tony

Tony, dein Skript ist in Ordnung, aber wenn du 100 Dateien hast? Fügen Sie diesen Code in all diesen hinzu:

include_once ('scripts.php');
strip_php_extension ();

Ich denke, Sie haben in jeder PHP-Datei ein Menü (wahrscheinlich wird Ihr Menü auf allen Ihren Webseiten angezeigt), so dass Sie diese 2 Codezeilen nur in Ihrer Menüdatei hinzufügen können. Diese Arbeit für mich: D

1
user5499497

Entfernen Sie eine Dateierweiterung durch .htaccess

Ursprüngliche URL: http://ravinderrathore.herobo.com/contact.php

htaccess-Regel zum Entfernen von .php, .html usw. -Dateierweiterungen von der URL.

RewriteRule ^(.*)$ $1.php

After Rewriting: http://ravinderrathore.herobo.com/contact

RewriteEngine on

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/

RewriteRule ^index(.*)?$ index.php$1 [L,QSA]

RewriteRule ^login_success(/)?$ login_success.php [L,QSA]

RewriteRule ^contact(/)?$ contact.php [L,QSA]
1
Ravinder Kumar

wie Igor, sollte aber auch ohne Zeile 2 funktionieren:

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

Tatsächlich ist dies die einfachste Möglichkeit, dies zu manipulieren

  1. Öffnen Sie einen neuen Ordner auf Ihrem Server, z. "Daten"
  2. Fügen Sie index.php (oder index.html) hinzu

Und dann liest die URL www.yoursite.com/data diese index.php-Datei. Wenn Sie es weiter ausführen möchten, öffnen Sie einen Unterordner (z. B. "List") darin, fügen Sie eine andere index.php in diesen Ordner ein, und Sie können www.yoursite.com/data/list diese PHP - Datei ausführen.

Auf diese Weise haben Sie die volle Kontrolle darüber, sehr nützlich für SEO.

1
Dan Horvat

mit der ersten Antwort ungefähr gleich, aber ein paar weitere Vorteile.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Addieren Sie einfach, wenn Sie eine andere Dateiendung in Ihren Websites haben

0
Võ Minh