Frage

Ich verwende PHP, um Webanwendungen zu erstellen, aber ich möchte meine Webseiten ohne .php -Erweiterung in der Adressleiste des Browsers. Für Eample http://www.example.com/index.php Shows wie http://www.example.com/index in der Adressleiste des Browsers.

Wie kann ich das machen?

War es hilfreich?

Lösung

Setzen Sie dies in eine Datei mit dem Namen .htaccess in Ihrem www-root:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php

Dies funktioniert, wenn Sie Apache ausführen und mod_rewrite aktivieren lassen.

Andere Tipps

Erstellen Sie einfach eine .htaccess -Datei in WAMP/www/ und kopieren Sie diesen Code.

Options +FollowSymlinks


RewriteEngine On


RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.+)$ /$1.php [L,QSA]

Hoffnung! Dies wäre nützlich für jemanden !!

Sie möchten die entsprechende Methode von finden Für Ihren Webserver. Sie können Sie abbilden

www.domain.com/page

zu

www.domain.com/page.php

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

Nur um darauf hinzuweisen, dass bei älteren Versionen von IIS beispielsweise IIS6 und Sie angenommen werden, dass Sie sich in einem 32 -Bit -Prozess befinden, ist Ionics ionics Rewrite ein fantastisches kostenloses URL -Umschreibmodul. Innerhalb von 64 Bit in IIS 6 habe ich festgestellt, dass das kommerzielle Produkt Helicon Isapi 3 als großartiges Werkzeug umschreibt. Aber wenn Sie in 32 Bit sind, ist Ionics kostenlos und tut alles, was Sie benötigen.

http://iirf.codeplex.com/

In Apache2.conf habe ich

<Files data>    
 ForceType application/x-httpd-php    
</Files>

Was bedeutet data wird als PHP -Datei behandelt ohne die Erweiterung

Es gibt verschiedene Möglichkeiten, dies zu tun.

Sie können Mod-Browrite verwenden, um Foo nach foo.php zu restreuen, damit Anfragen für /bar von /bar.php behandelt werden.

Sie können Verzeichnisse und Standard-Dateien verwenden, damit Sie mit dem Direktor /Foo /von /foo/index.php verwandelt werden.

Sie können ein Php-Skript als Handler für 404-Fehler festlegen, dann verlinken Sie einfach mit nicht existierenden Dateien, und das Handler-File befasst sich damit, wie es jedoch mag. (Normalerweise verwenden Sie eine Art Karte von URL zu PHP-Datei)

Sie können Ihrem Webserver mitteilen, dass alle Anfragen nach einem bestimmten Webserver von PHP behandelt werden sollen.

Die erste oder zweite Lösung ist die einfachste, aber die beiden letzten bieten die beste Flexibilität, und Varianten davon sind das, was die meisten größeren Frameworks tun.

Auf Systemen, die den Apache -Webserver verwenden, würden Sie mod_rewrite verwenden.

Auf neueren Versionen von IIS können Sie ihre Version von mod_rewrite verwenden. Bei älteren Versionen müssen Sie ein Plugin kaufen.

Stack Overflow -Artikel

Suchen Sie den Stack -Überlauf und Sie sollten Antworten auf bereits gestellte Fragen finden.

Hier ist Ein Anfänger -Tutorial Für URL -Umschreiben.

little modification - better to use REQUEST_URI and check for the directory


# Turn mod_rewrite on

RewriteEngine on

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Fügen Sie diesen Code in Ihre .htaccess -Datei auf dem Remote -Server ein:

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

Dadurch werden die URLs so umschreiben, wie Sie es beabsichtigt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top