Comment puis-je supprimer "public/index.php" dans l'url générée laravel?

fondamentalement, je dois supprimer index.php ou public/index.php de l'URL générée dans laravel, généralement le chemin est localhost/public/index.php/someWordForRoute , il devrait être quelque chose comme localhost/someWordForRoute

htacces

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [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',

comment puis-je changer cela?

67
demandé sur cheloncio 2014-05-24 00:33:00

14 réponses

Option 1: Utiliser .htaccess

si elle n'est pas déjà là, créer un .fichier htaccess dans le répertoire racine de Laravel. Créez un fichier .htaccess dans votre répertoire Laravel root s'il n'existe pas déjà. (Normalement il est sous votre dossier public_html )

Modifier la .fichier htaccess contenant le code suivant:

<IfModule mod_rewrite.c>
   RewriteEngine On 
   RewriteRule ^(.*)$ public/ [L]
</IfModule>

Maintenant, vous devriez être en mesure d'accéder au site web sans l' "/public / index.php/".

Option 2: Déplacer des choses dans le répertoire '/ public' vers le répertoire racine

créer un nouveau dossier dans votre répertoire racine, et déplacez tous les fichiers et dossiers sauf le dossier public. Vous pouvez l'appeler ce que vous voulez. Je vais utiliser "laravel_code".

ensuite, déplacez tout hors du répertoire public et dans le dossier racine. Il devrait en résulter quelque chose de semblable à ceci:: enter image description here

après cela, tout ce que nous avons à faire est d'éditer les emplacements dans le fichier laravel_code/bootstrap/paths.php et le fichier index.php .

Dans laravel_code/bootstrap/paths.php trouver la ligne de code suivante:

'app' => __DIR__.'/../app',
'public' => __DIR__.'/../public',

et les remplacer par:

'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../',

Dans index.php , de trouver dans ces lignes:

require __DIR__.'/../bootstrap/autoload.php';     
$app = require_once __DIR__.'/../bootstrap/start.php';

et les remplacer par:

require __DIR__.'/laravel_code/bootstrap/autoload.php';     
$app = require_once __DIR__.'/laravel_code/bootstrap/start.php';

Source: Comment supprimer/ public / de L'URL en Laravel

98
répondu Luzan Baral 2018-07-04 07:47:32

J'ai essayé sur Laravel 4.2

renommez server.php dans le dossier racine de votre Laravel en index.php et copiez le fichier .htaccess du répertoire /public dans votre dossier racine de Laravel.

j'espère que cela fonctionne

37
répondu Tejas Jadhav 2014-10-25 10:46:11

voici des étapes simples pour supprimer PUBLIC dans URL (Laravel 5)

1: copier tous les fichiers du dossier public et les passer dans le dossier racine de laravel

2: Ouvrir un index.php et le changement

de

 require __DIR__.'/../bootstrap/autoload.php';

à

 require __DIR__.'/bootstrap/autoload.php';

et

$app = require_once __DIR__.'/../bootstrap/app.php';

à

$app = require_once __DIR__.'/bootstrap/app.php';

dans laravel 4 Chemin 2 est $app = require_once __DIR__.'/bootstrap/start.php'; au lieu de $app = require_once __DIR__.'/bootstrap/app.php';/app.php

C'est tout.

12
répondu Khandad Niazi 2017-04-06 19:56:35

1) vérifiez si mod_rewrite est activé. Allez dans le répertoire /etc/apache2/mods-enabled et voyez si le rewrite.load est disponible. Si ce n'est pas le cas, activez-le en utilisant la commande sudo a2enmod rewrite .Il activera le module de réécriture. Si son déjà activé, il affichera le message Module rewrite already enabled .

2) Créer un hôte virtuel pour l'annuaire public de sorte qu'au lieu de donner http://localhost/public/index.php nous serons en mesure d'utiliser comme cela http://example.com/index.php . [donc le nom du dossier public sera caché]

3)Puis créer un .htaccess qui cache l'index.php de votre url qui devrait être dans le répertoire racine (dossier public)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/ [L]
10
répondu Orchid 2014-11-27 10:25:25

ne pas confondre avec l'autre option l'extrait ci-dessous que j'utilise et sera utile pour vous aussi. Mettez les htacces ci-dessous dans votre racine.

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/    [L]
</IfModule>

allez dans votre répertoire public et mettez un autre fichier htaccess avec l'extrait de code ci-dessous

<IfModule mod_rewrite.c>
    RewriteEngine On
    # Removes index.php from ExpressionEngine URLs  
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url= [PT,L]

</IfModule>

son fonctionnement... !!!

8
répondu Ankit Vishwakarma 2016-01-19 16:50:20

cela a probablement très peu à voir avec Laravel et tout à voir avec votre Apache configs.

avez-vous accès à la configuration de votre serveur Apache? Si c'est le cas, consultez le docs:

en général, vous ne devez utiliser .htaccess lorsque vous n'avez pas l'accès au fichier de configuration principal. Il est, par exemple, un idée fausse commune que l'authentification de l'utilisateur devrait toujours être faite dans .htaccess fichiers, et, plus récemment, une autre idée fausse que les directives mod_rewrite doivent entrer .fichiers htaccess. Ce n'est tout simplement pas cas. Vous pouvez mettre les configurations d'authentification de l'utilisateur configuration du serveur, et c'est, en fait, la meilleure façon de le faire chose. De même, les directives mod_rewrite fonctionnent mieux, dans de nombreux respecte, dans la configuration du serveur principal.

... En général, l'utilisation de .les fichiers htaccess doivent être évités lorsque possible. Tout configuration que vous envisageriez de mettre dans un .fichier htaccess, peut effectivement être faites dans une section dans le fichier de configuration principal.

Source: documentation Apache .

la raison pour laquelle je mentionne cette première est parce qu'il est préférable de se débarrasser de .htaccess complètement si vous pouvez,et utiliser une étiquette Directory à l'intérieur d'une étiquette VirtualHost . Ceci étant dit, le reste de ceci va supposer que vous vous en tenez à la route .htaccess pour quelque raison que ce soit.

pour décomposer cela, quelques choses pourraient se passer:

  1. je note, peut-être inutilement, que votre dossier est appelé .htacces dans votre question. À mon avis, c'est une faute de frappe, mais à la moindre occasion, vous l'avez oubliée et il ne manque que les secondes, c'est exactement le genre d'erreur mineure qui me laisserait me cogner la tête. contre le mur à la recherche de quelque chose de plus difficile.

  2. votre serveur ne pouvait pas autoriser .htaccess . Pour vérifier cela, allez dans votre fichier de configuration Apache. Moderne Apache construit ce n'est généralement pas dans un fichier de config donc, assurez-vous d'utiliser celui qui points à votre application, partout où elle existe. Changement

    AllowOverride none
    

    à

    AllowOverride all
    

    comme suivi, les documents Apache aussi recommandez que, pour des raisons de sécurité, vous ne faites pas cela pour chaque dossier si vous allez à aller pour .htaccess pour réécrire. Au lieu de cela, faites-le pour les dossiers auxquels vous devez ajouter .htaccess .

  3. avez-vous activé mod_rewrite ? Qui pourrait être la cause des problèmes. Je remarque que vous avez l'étiquette en haut <IfModule mod_rewrite.c> . Essayez de commenter ces balises et redémarrez Apache. Si vous obtenez une erreur, alors c'est probablement parce que vous avez besoin d'activer mod_rewrite : comment activer mod_rewrite pour Apache 2.2

Espérons que cette aide. J'ai nommé certaines des questions les plus communes, mais il y en a plusieurs autres qui pourraient être plus banales ou uniques. Une autre suggestion sur un serveur dev? Ré-installer Apache. Si possible, faites-le à partir d'une autre source avec un bon tutoriel.

5
répondu smcjones 2017-05-23 12:02:51

Laravel est livré avec une jolie URL .htaccess déjà... ça devrait être bon de sortir de la boîte... http://laravel.com/docs/installation#pretty-urls

assurez-vous que mod_rewrite est activé et que votre chemin d'accès est défini dans le répertoire public de votre application.

1
répondu Kisuka 2014-05-23 20:38:48

Pour Laravel 4 & 5:

  1. renommer le serveur.php dans votre répertoire racine Laravel pour indexer.php
  2. bien reçu .le fichier htaccess du répertoire /public vers votre répertoire racine Laravel.

c'est ça !! :)

1
répondu Abhijeet Navgire 2017-06-29 11:57:45
 RewriteEngine on

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

 RewriteRule ^(.*)$ index.php/ [L]

utilisez ceci dans .htaccess et redémarrez le serveur

0
répondu Arun 2016-01-20 04:58:42

J'espère que ça m'aidera comme ça m'a aidé.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/ [L]
</IfModule>
0
répondu Harry Bosh 2016-06-17 04:58:00

renommer le serveur.php dans le dossier racine de votre Laravel pour indexer.php et copiez le .le fichier htaccess du répertoire /public vers votre répertoire racine Laravel. -- C'est ça !! :)

0
répondu Rizwan Taj 2016-07-12 11:35:47

je viens d'installer Laravel 5 pour un projet et il y a un fichier à la racine appelé server.php .

remplacer par index.php et il fonctionne ou taper dans le terminal:

$cp server.php index.php
0
répondu Samuel Kwame Antwi 2018-08-17 17:54:11
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/(public)/(index.php)/$ / [L]
</IfModule>
-2
répondu onlinewebsite 2014-12-02 15:38:38

selon Laravel 5.3 les choses ci-dessus ne fonctionneront pas correctement, mais s'il vous plaît soyez calme et suivez les étapes ci-dessous:

Étape 1. Aller à l'intérieur du projet laravel

Étape 2. Créer un répertoire/Dossier aléatoire par exemple. laravelcode

Étape 3. Déplacer tout le dossier et les fichiers (sauf public dossier)

Étape 4. Déplacer tous les dossiers et les dossiers qui sont à l'intérieur public le dossier à la laravel projet

Étape 5. Maintenant, dans le projet laravel, il y a index.php fichier, s'il vous plaît ouvrir que et de changer les chemins de chemise pour bootstrap selon le nouveau chemin comme précédemment il était "require DIR ."/ ../ bootstrap / autoload.php';" maintenant, il deviendra à "exiger DIR ."/laravelcode/bootstrap / autoload.php'; "

C'est ça, lancez votre url sans public et index.php comme ci-dessous http://localhost/blog /

-3
répondu amar nath jena 2016-09-01 19:02:37