Necesito eliminar index.php
o public/index.php
de la URL generada en Laravel; comúnmente camino es localhost/public/index.php/someWordForRoute
, debería ser algo así comolocalhost/someWordForRoute.
.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes.
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php[L]
app / config / app.php
'url' => 'http://localhost',
¿Cómo puedo cambiar eso?
mod_rewrite
esté habilitado./var/www/project_name/public
Respuestas:
Opción 1: use .htaccess
Si aún no está allí, cree un archivo .htaccess en el directorio raíz de Laravel. Crea un
.htaccess
archivo en tu directorio raíz de Laravel si aún no existe. (Normalmente está debajo de tupublic_html
carpeta)Edite el archivo .htaccess para que contenga el siguiente código:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
Ahora debería poder acceder al sitio web sin la parte "/public/index.php/".
Opción 2: mover cosas en el directorio '/ public' al directorio raíz
Cree una nueva carpeta en su directorio raíz y mueva todos los archivos y carpetas excepto la carpeta pública. Puedes llamarlo como quieras. Usaré "laravel_code".
A continuación, mueva todo del directorio público a la carpeta raíz. Debería resultar en algo similar a esto:
Después de eso, todo lo que tenemos que hacer es editar las ubicaciones en el
laravel_code/bootstrap/paths.php
archivo y elindex.php
archivo.En
laravel_code/bootstrap/paths.php
busque la siguiente línea de código:'app' => __DIR__.'/../app', 'public' => __DIR__.'/../public',
Y cámbielos a:
'app' => __DIR__.'/../app', 'public' => __DIR__.'/../../',
En
index.php
, encuentre estas líneas:require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/start.php';
Y cámbielos a:
require __DIR__.'/laravel_code/bootstrap/autoload.php'; $app = require_once __DIR__.'/laravel_code/bootstrap/start.php';
Fuente: Cómo eliminar / public / de la URL en Laravel
fuente
etc/apache2/apache2.conf
cambiando deAllowOverride None
aAllowOverride All
donde se ve la configuración de directorio,<Directory /var/www/></Directory>
.<Directory ...
tengaAllowOverride All'
algo como esto:<Directory "/var/www/html/laravel/public"> Options Indexes FollowSymLinks MultiViews **AllowOverride All** </Directory>
Probé esto en Laravel 4.2
Cambie el nombre
server.php
en la carpeta raíz de Laravelindex.php
y copie el.htaccess
archivo desde el/public
directorio a la carpeta raíz de Laravel.espero que funcione
fuente
No se confunda con otra opción del fragmento de abajo que estoy usando y que también le será útil. Ponga los siguientes htacces en su raíz.
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
Vaya a su directorio público y coloque otro archivo htaccess con el fragmento de código a continuación
<IfModule mod_rewrite.c> RewriteEngine On # Removes index.php from ExpressionEngine URLs RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [PT,L] </IfModule>
Esta funcionando... !!!
Usos de Laravel a continuación .htaccess
# Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
fuente
AQUÍ HAY PASOS SIMPLES PARA ELIMINAR PUBLIC IN URL (Laravel 5)
1: Copie todos los archivos de la carpeta pública y péguelos en la carpeta raíz de laravel
2: Abra index.php y cambie
Desde
require __DIR__.'/../bootstrap/autoload.php';
A
require __DIR__.'/bootstrap/autoload.php';
Y
$app = require_once __DIR__.'/../bootstrap/app.php';
A
$app = require_once __DIR__.'/bootstrap/app.php';
En laravel 4, la ruta 2 es en
$app = require_once __DIR__.'/bootstrap/start.php';
lugar de$app = require_once __DIR__.'/bootstrap/app.php';/app.php
Eso es.
fuente
1) Compruebe si mod_rewrite está habilitado. Vaya al
/etc/apache2/mods-enabled
directorio y vea sirewrite.load
está disponible. Si no es así, habilítelo usando el comandosudo a2enmod rewrite
. Habilitará el módulo de reescritura. Si ya está habilitado, mostrará el mensajeModule rewrite already enabled
.2) Crear un host virtual para directorio público para que en lugar de dar
http://localhost/public/index.php
podamos usar asíhttp://example.com/index.php
. [por lo tanto, el nombre de la carpeta pública se ocultará]3) Luego cree un .htaccess que ocultará el index.php de su url, que debe estar dentro del directorio raíz (carpeta pública)
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
fuente
mod_rewrite
estaba discapacitado.Es probable que esto tenga muy poco que ver con Laravel y mucho que ver con sus configuraciones de Apache.
¿Tiene acceso a la configuración de su servidor Apache? Si es así, mira esto, de los documentos:
La razón por la que menciono esto primero es porque es mejor deshacerse de él por
.htaccess
completo si puede, y usar unaDirectory
etiqueta dentro de unaVirtualHost
etiqueta. Dicho esto, el resto de esto supondrá que te apegas a la.htaccess
ruta por cualquier motivo.Para desglosar esto, podrían estar sucediendo un par de cosas:
Observo, quizás inútilmente, que su archivo se menciona
.htacces
en su pregunta. Supongo que es un error tipográfico, pero en la remota posibilidad de que lo hayas pasado por alto y, de hecho, solo falten los segundos, este es exactamente el tipo de error menor que me dejaría golpeándome la cabeza contra la pared buscando algo más desafiante. .Su servidor no podría permitirlo
.htaccess
. Para verificar esto, vaya a su archivo de configuración de Apache. En las compilaciones modernas de Apache, esto generalmente no está en un archivo de configuración, así que asegúrese de usar el que apunta a su aplicación, donde sea que exista. Cambioa
Como seguimiento, los documentos de Apache también recomiendan que, por motivos de seguridad, no haga esto para cada carpeta si va a
.htaccess
reescribir. En su lugar, hágalo para las carpetas a las que necesita agregar.htaccess
.¿Tiene
mod_rewrite
habilitado? Eso podría estar causando los problemas. Noto que tienes la etiqueta en la parte superior<IfModule mod_rewrite.c>
. Intente comentar esas etiquetas y reinicie Apache. Si recibe un error, probablemente sea porque necesita habilitarmod_rewrite
: Cómo habilitar mod_rewrite para Apache 2.2Espero que esto ayude. He mencionado algunos de los problemas más comunes, pero hay varios otros que podrían ser más mundanos o únicos. ¿Otra sugerencia sobre un servidor de desarrollo? Vuelva a instalar Apache. Si es posible, hágalo de una fuente diferente con un buen tutorial.
fuente
Para Laravel 4 y 5:
server.php
en su carpeta raíz de Laravel aindex.php
.htaccess
archivo del/public
directorio a su carpeta raíz de Laravel .Eso es !! :)
fuente
También asegúrese de que Rewrite Engline esté encendido después de editar el archivo .htaccess
fuente
Laravel se envía con una bonita URL .htaccess ya ... debería estar listo para salir de la caja ... http://laravel.com/docs/installation#pretty-urls
Asegúrese de que mod_rewrite esté habilitado y que su ruta de inicio esté configurada en el directorio público de su aplicación.
fuente
mod_rewrite
y copié el código que está en esa página y aún no funcionaServerAdmin webmaster@localhost DocumentRoot /home/web-apps/myproject/public
user
es el lugar donde guardo las fotos, también tengo un archivo blade que se llamauser
, cuando escribo en la URLmyproject.com/user
me muestra el contenido de la carpeta, las fotosDebe realizar los siguientes pasos para hacer esto, que son los siguientes
Asigne su dominio a la carpeta pública de su proyecto (es decir, / var / www / html / yourproject / public) (si usa linux)
Vaya a su carpeta pública edite su
.htaccess
archivo allíAddHandler application/x-httpd-php72 .php <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect non-www to www RewriteCond %{HTTP_HOST} !^www\. RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Redirect non-http to https RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] # Remove index.php RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] </IfModule>
https
la protección.fuente
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
use esto en .htaccess y reinicie el servidor
fuente
Espero que esto ayude como lo hizo conmigo.
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L] </IfModule>
fuente
Acabo de instalar Laravel 5 para un proyecto y hay un archivo en la raíz llamado
server.php
.Cámbielo a
index.php
y funciona o escriba terminal:fuente
Cambie el nombre
server.php
en la carpeta raíz de Laravelindex.php
y copie el.htaccess
archivo desde el/public
directorio a la carpeta raíz de Laravel.fuente
Funciona y es 100% SEGURO
https://medium.com/@matteovirgilio/laravel-5-how-to-change-the-public-folder-and-secure-private-files-on-shared-hosting-a8e2e5b9b25f
fuente
Si usa IIS Windows Server, agregue el
web.config
archivo en la carpeta raíz y coloque el siguiente código:<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{URL}" pattern="^system.*" ignoreCase="false" /> </conditions> <action type="Rewrite" url="/index.php/{R:1}" /> </rule> <rule name="Imported Rule 2" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> <add input="{R:1}" pattern="^(index\.php|images|robots\.txt|css)" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
y si usas
.htaccess
usa este:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
fuente
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)/(public)/(index.php)/$ $1/$4 [L] </IfModule>
fuente
Según Laravel 5.3, las cosas anteriores no funcionarán correctamente, pero tenga la calma y siga los pasos a continuación:
Paso 1. Vaya al interior del proyecto laravel
Paso 2. Cree un directorio / carpeta aleatorio, por ejemplo. laravelcode
Paso 3. Mueva todas las carpetas y archivos (excepto la carpeta pública )
Paso 4. Mueva todas las carpetas y archivos que están dentro de la carpeta pública al proyecto laravel
Paso 5. Ahora, dentro del proyecto laravel hay un archivo index.php, por favor abre eso y cambia las rutas de la carpeta para bootstrap según la nueva ruta como antes era "require DIR . '/ .. / bootstrap / autoload.php';" ahora se convertirá en "require DIR . '/ laravelcode / bootstrap / autoload.php';"
Eso es, simplemente ejecute su URL sin public e index.php como debajo de http: // localhost / blog /
fuente