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