andriajah Sun Feb 2024 2 weeks ago

Bagaimana Cara Mengarahkan URL www ke non-www di Laravel

Dalam tutorial ini, saya akan menunjukkan cara mengarahkan ulang url www ke non-www di aplikasi laravel. saya akan berbagi dengan Anda laravel redirect www ke non www menggunakan htaccess, laravel redirect www ke non www menggunakan Apache2, laravel redirect www ke non www menggunakan nginx.

Terkadang kita hanya perlu menyimpan satu URL untuk SEO. kami tidak dapat membuka situs web dengan URL www dan non-www baik untuk situs web kami. Anda harus menyimpan semua url dengan URL www atau non-www. jadi, saya ingin memberi Anda empat cara berikut untuk mengalihkan www ke URL non-www pada aplikasi laravel Anda.

Laravel Redirect www ke URL non-www menggunakan htaccess

Untuk mengalihkan www ke URL non-www di Laravel menggunakan .htaccess, Anda dapat menambahkan kode berikut ke file .htaccess Anda. Pastikan untuk menempatkan kode ini sebelum aturan khusus Laravel lainnya.

 

public/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
  
    # Redirect www to non-www
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
  
    # Other Laravel rules...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

 

Kode ini memeriksa apakah HTTP_HOST dimulai dengan 'www.' dan, jika ya, alihkan ke versi non-www menggunakan pengalihan permanen 301. %1 di RewriteRule mewakili grup yang diambil dari kondisi RewriteCond.

 

Ingatlah untuk mengganti http dengan https jika situs Anda menggunakan SSL. Setelah melakukan perubahan pada file .htaccess Anda, pastikan untuk menguji secara menyeluruh untuk memastikan bahwa pengalihan berfungsi seperti yang diharapkan. Selain itu, selalu buat cadangan file .htaccess Anda sebelum melakukan perubahan.

 

Laravel Redirect www ke URL non-www menggunakan Apache2

Untuk mengalihkan URL www ke non-www di Laravel menggunakan Apache, Anda dapat menggunakan konfigurasi VirtualHost. Berikut ini contoh cara mengonfigurasi pengalihan di file konfigurasi Apache Anda:

 

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /path/to/your/laravel/public
    ServerName example.com
  
    <Directory /path/to/your/laravel/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
  
    # Redirect www to non-www
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

 

Simpan perubahan pada file konfigurasi.

Mulai ulang Apache untuk menerapkan perubahan:

sudo service apache2 restart

 

Sekarang, Anda dapat memeriksa URL Anda.

 

Laravel Redirect www ke URL non-www menggunakan nginx

Untuk mengalihkan www ke URL non-www di Laravel menggunakan Nginx, Anda dapat mengubah konfigurasi blok server Anda. Berikut ini contoh cara mengonfigurasi pengalihan di file konfigurasi Nginx Anda:

 

/etc/nginx/sites-available/example.com

server {
    listen 80;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}
  
server {
    listen 80;
    server_name example.com;
    root /path/to/your/laravel/public;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    error_log /var/log/nginx/example_error.log;
    access_log /var/log/nginx/example_access.log;
}

 

Laravel Redirect www ke non-www URLs menggunakan Middleware

Untuk mengalihkan URL www ke non-www di Laravel menggunakan middleware, Anda dapat membuat middleware khusus untuk menangani pengalihan. Berikut panduan langkah demi langkah:

 

Buat middleware baru menggunakan perintah berikut:

php artisan make:middleware RedirectNonWww

Buka file middleware yang dihasilkan, yang terletak di app/Http/Middleware/RedirectNonWww.php, dan ubah metode pegangan sebagai berikut:

 

app/Http/Middleware/RedirectNonWww.php

<?php
  
namespace App\Http\Middleware;
  
use Closure;
  
class RedirectNonWww
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function handle($request, Closure $next)
    {
        if (substr($request->header('host'), 0, 4) == 'www.') {
            $request->headers->set('host', 'example.com');
  
            return redirect()->to($request->path());
        }
          
        return $next($request);
    }
}

Daftarkan middleware Anda di file app/Http/Kernel.php. Tambahkan baris berikut ke array $middleware:

app/Http/Kernel.php

<?php
  
namespace App\Http;
  
use Illuminate\Foundation\Http\Kernel as HttpKernel;
  
class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array

     */
    protected $middleware = [
        \App\Http\Middleware\TrustProxies::class,
        \Illuminate\Http\Middleware\HandleCors::class,
        ...
        \App\Http\Middleware\RedirectNonWww::class,
    ];
  
    ....

 

Sekarang, Anda dapat memeriksa apakah ini berfungsi dengan URL.

Saya harap ini dapat membantu Anda...

laravel redirect www to non-www laravel tutorial