Muchas veces cuando estamos desarrollando un proyecto en Laravel y lo pasamos a producción, vemos errores que aparece en la URL, la carpeta public o el archivo index.php:
// Valid URL
https://example.com/blog
// Invalid URL
https://example.com/index.php/blog
https://example.com/public/blog
Lo cual, si tenemos un blog, esto nos puede traer penalizaciones con el SEO; en esta entrada vamos a ver como reparar este problema, no desde el htacces que muchas veces no funciona y que hay muchos ejemplos de como hacerlo en Internet, si no, mediante código PHP, por lo tanto, si estas desesperado, esta es la última medida que puedes implementar.
Para remover la carpeta public y/o index.php de la URL, lo que debemos de hacer es ir al proveedor de nuestra aplicación:
app/Providers/AppServiceProvider.php
Que es una especie de middleware, y creamos una función como la siguiente:
app/Providers/AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
$this->removePublicPHPFromURL();
}
protected function removePublicPHPFromURL()
{
if (Str::contains(request()->getRequestUri(), '/public/')) {
$url = str_replace('public/', '', request()->getRequestUri());
if (strlen($url) > 0) {
header("Location: $url", true, 301);
exit;
}
}
}
}
O si quieres para remover el index.php, queda como:
protected function removeIndexPHPFromURL()
{
if (Str::contains(request()->getRequestUri(), '/index.php/')) {
$url = str_replace('index.php/', '', request()->getRequestUri());
if (strlen($url) > 0) {
header("Location: $url", true, 301);
exit;
}
}
}
En ambos casos, como puedes ver, simplemente verificamos mediante el request, si existe la carpeta de index.php o la carpeta public y la removemos, luego, hacemos una redirección de tipo 301 que significa que indica que es una redirección permanente a la misma URL quitando la carpeta public e index.php.
- Andrés Cruz
Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos Curso y Libro Laravel 11 con Tailwind Vue 3, introducción a Jetstream Livewire e Inerta desde cero - 2024.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter
Acepto recibir anuncios de interes sobre este Blog.
!Cursos desde!
4$
En Academia
Ver los cursos!Libros desde!
1$
Ver los libros