Eine der URLs auf dieser Website lautet:
https://thewebtier.com/articles
Es scheint jedoch, dass die folgende URL ebenfalls funktioniert:
https://thewebtier.com/index.php/articles
Ähnliche Probleme gibt es auch bei der Haupt-Website-URL.
Die Standard-Url ist:
https://thewebtier.com
Aber auch die folgenden URLs werden funktionieren:
https://thewebtier.com/index.php
und
https://thewebtier.com/index.php?anything
Diese Situation kann dazu führen, dass die Konkurrenz Urls für diese unerwünschten Urls mit index.
und Suchmaschinen werden doppelte URLs für unsere gesamte Website sehen und schließlich wissen wir nicht, welche URLs in Suchmaschinen angezeigt werden (die ohne index.php oder die mit ihr).
In diesem kurzen Lernprogramm werden wir uns die Optionen und Möglichkeiten zum Entfernen von index.php
aus der URL in Laravel.
1. public/index.php
Die schnellste Lösung ist, den folgenden Code in Ihre public/index.php
Datei.
Lesen Sie auch: Laravel-App in der Produktion bereitstellen
/*
* --------------------------------------------------------------------
* REMOVE index.php from URI
* --------------------------------------------------------------------
*/
if (strpos($_SERVER['REQUEST_URI'],'index.php') !== FALSE )
{
$new_uri = preg_replace('#index\.php\/?#', '', $_SERVER['REQUEST_URI']);
header('Location: '.$new_uri, TRUE, 301);
die();
}
2. RouteServiceProvider.php
Eine andere Methode ist die Suche nach der Route in RouteServiceProvider.php
und leiten Sie eine Umleitung ein.
protected function removeIndexFromUrl()
{
if (Str::contains(request()->getRequestUri(), '/index.php/')) {
$url = str_replace('index.php/', '', request()->getRequestUri());
if (strlen($url) > 0) {
header("Location: $url", true, 301);
exit;
}
}
}
und registrieren Sie die Methode innerhalb von boot()
Methode.
Lesen Sie auch: Lokalisierung in Laravel
3. Umleitung mit Nginx
Wenn Ihre Website auf Nginx läuft, können Sie die Umleitung auch mit einfachen Konfigurationen in Ihrer Nginx-Konfiguration vornehmen.
if ($request_uri ~* "^/index\.php(/?)(.*)") {
return 301 $2;
}
4. Umleitung mit Apache
Wenn Ihre Website auf einem Apache-Server läuft, fügen Sie einfach den folgenden Code in public/.htaccess
datei.
Lesen Sie auch: Eine bis viele polymorphe Beziehung in Laravel
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect if index.php is in the URL
RewriteRule ^index.php/(.+) /$1 [R=301,L]
</IfModule>
Teilen Sie uns in den Kommentaren unten mit, ob Sie Fragen haben.
Lesen Sie auch: Warum ist Laravel das beste PHP-Framework?