Preciso remover index.php
ou public/index.php
da URL gerada no Laravel; comumente o caminho é localhost/public/index.php/someWordForRoute
, deve ser algo 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',
Como posso mudar isso?
mod_rewrite
está ativado./var/www/project_name/public
Respostas:
Opção 1: use .htaccess
Se ainda não estiver lá, crie um arquivo .htaccess no diretório raiz do Laravel. Crie um
.htaccess
arquivo no diretório raiz do Laravel, se ainda não existir. (Normalmente está na suapublic_html
pasta)Edite o arquivo .htaccess para que contenha o seguinte código:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
Agora você deve conseguir acessar o site sem a parte "/public/index.php/".
Opção 2: Mova as coisas do diretório '/ public' para o diretório raiz
Crie uma nova pasta em seu diretório raiz e mova todos os arquivos e pastas, exceto a pasta pública. Você pode chamá-lo do que quiser. Vou usar "laravel_code".
Em seguida, mova tudo do diretório público para a pasta raiz. Deve resultar em algo semelhante a este:
Depois disso, tudo o que precisamos fazer é editar os locais no
laravel_code/bootstrap/paths.php
arquivo e noindex.php
arquivo.Em
laravel_code/bootstrap/paths.php
encontrar a seguinte linha de código:'app' => __DIR__.'/../app', 'public' => __DIR__.'/../public',
E altere-os para:
'app' => __DIR__.'/../app', 'public' => __DIR__.'/../../',
Em
index.php
, encontre estas linhas:require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/start.php';
E altere-os para:
require __DIR__.'/laravel_code/bootstrap/autoload.php'; $app = require_once __DIR__.'/laravel_code/bootstrap/start.php';
Fonte: Como remover / public / da URL no Laravel
fonte
etc/apache2/apache2.conf
mudança deAllowOverride None
paraAllowOverride All
onde você vê a configuração do diretório<Directory /var/www/></Directory>
,.<Directory ...
temAllowOverride All'
algo parecido com isto:<Directory "/var/www/html/laravel/public"> Options Indexes FollowSymLinks MultiViews **AllowOverride All** </Directory>
Eu tentei isso no Laravel 4.2
Renomeie o
server.php
na pasta raiz do Laravel paraindex.php
e copie o.htaccess
arquivo do/public
diretório para a pasta raiz do Laravel.eu espero que dê certo
fonte
Não se confunda com outra opção do snippet abaixo que estou usando e será útil para você também. Coloque os htacces abaixo em sua raiz.
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
Vá para o seu diretório público e coloque outro arquivo htaccess com o trecho de código abaixo
<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>
Está funcionando... !!!
Laravel usa abaixo .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]
fonte
AQUI ESTÃO PASSOS SIMPLES PARA REMOVER PÚBLICO EM URL (Laravel 5)
1: Copie todos os arquivos da pasta pública e cole-os na pasta raiz do laravel
2: Abra index.php e mude
De
require __DIR__.'/../bootstrap/autoload.php';
Para
require __DIR__.'/bootstrap/autoload.php';
E
$app = require_once __DIR__.'/../bootstrap/app.php';
Para
$app = require_once __DIR__.'/bootstrap/app.php';
No laravel 4, o caminho 2 é em
$app = require_once __DIR__.'/bootstrap/start.php';
vez de$app = require_once __DIR__.'/bootstrap/app.php';/app.php
É isso.
fonte
1) Verifique se mod_rewrite está habilitado. Vá para o
/etc/apache2/mods-enabled
diretório e veja se orewrite.load
está disponível. Caso contrário, ative-o usando o comandosudo a2enmod rewrite
. Ele irá ativar o módulo de reescrita. Se já estiver habilitado, ele mostrará a mensagemModule rewrite already enabled
.2) Crie um host virtual para diretório público para que ao invés de dar
http://localhost/public/index.php
possamos usar assimhttp://example.com/index.php
. [portanto, o nome da pasta pública será ocultado]3) Em seguida, crie um .htaccess que ocultará o index.php de sua url, que deve estar dentro do diretório raiz (pasta pública)
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
fonte
mod_rewrite
estava desativado.Isso provavelmente tem muito pouco a ver com o Laravel e tudo a ver com suas configurações do Apache.
Você tem acesso à configuração do servidor Apache? Em caso afirmativo, verifique isso, nos documentos:
Menciono isso primeiro porque é melhor se livrar
.htaccess
completamente, se possível, e usar umaDirectory
tag dentro de outraVirtualHost
. Dito isso, o resto vai assumir que você está seguindo o.htaccess
caminho por qualquer motivo.Para quebrar isso, algumas coisas podem estar acontecendo:
Noto, talvez inutilmente, que seu arquivo foi mencionado
.htacces
em sua pergunta. Meu palpite é que é um erro de digitação, mas no caso de você ter esquecido e na verdade está faltando apenas o segundo s, esse é exatamente o tipo de pequeno erro que me deixaria batendo minha cabeça contra a parede em busca de algo mais desafiador .Seu servidor não pode estar permitindo
.htaccess
. Para verificar isso, vá para o arquivo de configuração do Apache. Em compilações modernas do Apache, isso geralmente não está em um arquivo de configuração, portanto, certifique-se de usar aquele que aponta para seu aplicativo, onde quer que ele exista. mudançapara
Como acompanhamento, os documentos do Apache também recomendam que, por motivos de segurança, você não faça isso para todas as pastas se
.htaccess
for reescrever. Em vez disso, faça isso para as pastas que você precisa adicionar.htaccess
.Você
mod_rewrite
habilitou? Isso pode estar causando os problemas. Percebi que você tem a etiqueta no topo<IfModule mod_rewrite.c>
. Experimente comentar essas tags e reinicie o Apache. Se você receber um erro, provavelmente é porque você precisa habilitarmod_rewrite
: How to enable mod_rewrite para Apache 2.2Espero que isto ajude. Eu mencionei alguns dos problemas mais comuns, mas existem vários outros que podem ser mais mundanos ou exclusivos. Outra sugestão em um servidor de desenvolvimento? Reinstale o Apache. Se possível, faça-o de uma fonte diferente com um bom tutorial.
fonte
Para Laravel 4 e 5:
server.php
na pasta raiz do Laravel paraindex.php
.htaccess
arquivo do/public
diretório para a pasta raiz do Laravel .É isso aí !! :)
fonte
Certifique-se também de que Rewrite Engline está ligado após editar o arquivo .htaccess
fonte
O Laravel já vem com um URL bonito .htaccess ... você deve estar pronto para sair da caixa ... http://laravel.com/docs/installation#pretty-urls
Certifique-se de que mod_rewrite esteja habilitado e que seu caminho inicial esteja definido como o diretório público de seu aplicativo.
fonte
mod_rewrite
e copiei o código que está nessa página e ainda sem funcionarServerAdmin webmaster@localhost DocumentRoot /home/web-apps/myproject/public
user
é o local onde guardo as fotos, também tenho um arquivo blade chamadouser
, quando escrevo na URLmyproject.com/user
me mostra o conteúdo da pasta, as imagensVocê deve executar as seguintes etapas para fazer isso, que são as seguintes
Mapeie seu domínio para a pasta pública do seu projeto (ou seja, / var / www / html / yourproject / public) (se estiver usando Linux)
Vá para sua pasta pública e edite seu
.htaccess
arquivo lá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
, ele protege isso.fonte
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
use isso em .htaccess e reinicie o servidor
fonte
Espero que isso ajude como ajudou a mim.
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L] </IfModule>
fonte
Acabei de instalar o Laravel 5 para um projeto e há um arquivo na raiz chamado
server.php
.Altere para
index.php
e funciona ou digite terminal:$cp server.php index.php
fonte
Renomeie o
server.php
na pasta raiz do Laravel paraindex.php
e copie o.htaccess
arquivo do/public
diretório para a pasta raiz do Laravel.fonte
Funciona e é 100% SEGURO
https://medium.com/@matteovirgilio/laravel-5-how-to-change-the-public-folder-and-secure-private-files-on-shared-hosting-a8e2e5b9b25f
fonte
Se você usar o IIS Windows Server, adicione o
web.config
arquivo na pasta raiz e coloque o código abaixo:<?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>
e se você usar,
.htaccess
use este:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
fonte
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)/(public)/(index.php)/$ $1/$4 [L] </IfModule>
fonte
De acordo com o Laravel 5.3, as coisas acima não funcionarão corretamente, mas por favor, fique calmo e siga os passos abaixo:
Etapa 1. Vá para dentro do projeto laravel
Etapa 2. Faça um diretório / pasta aleatório, por exemplo. laravelcode
Etapa 3. Mover todas as pastas e arquivos (exceto a pasta pública )
Etapa 4. Mover todas as pastas e arquivos que estão dentro da pasta pública para o projeto laravel
Etapa 5. Agora dentro do projeto laravel há o arquivo index.php, por favor abra isso e mude os caminhos da pasta para o bootstrap de acordo com o novo caminho, como anteriormente era "require DIR . '/ .. / bootstrap / autoload.php';" agora será necessário "exigir DIR . '/ laravelcode / bootstrap / autoload.php';"
É só executar sua url sem public e index.php como abaixo http: // localhost / blog /
fonte