So verstecken Sie .php vor Adressleiste
-
27-10-2019 - |
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?
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 URL-Wrewriting 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.
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.
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.