Je dois supprimer index.php
ou public/index.php
de l'URL générée dans Laravel; généralement chemin est localhost/public/index.php/someWordForRoute
, il devrait être quelque chose comme localhost/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',
Comment puis-je changer ça?
Si ce n'est déjà fait, créez un fichier .htaccess dans le répertoire racine Laravel. Créez un fichier .htaccess
dans votre répertoire racine Laravel s'il n'existe pas déjà. (Normalement, il se trouve sous votre dossier public_html
)
Editez le fichier .htaccess pour qu'il contienne le code suivant:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Vous devriez maintenant pouvoir accéder au site Web sans la partie "/public/index.php/".
Créez un nouveau dossier dans votre répertoire racine et déplacez tous les fichiers et dossiers sauf les dossiers publics. Vous pouvez appeler ça comme vous voulez. Je vais utiliser "laravel_code".
Ensuite, déplacez tout du répertoire public vers le dossier racine. Cela devrait aboutir à quelque chose de similaire
Après cela, tout ce que nous avons à faire est d’éditer les emplacements du fichier laravel_code/bootstrap/paths.php
et du fichier index.php
.
Dans laravel_code/bootstrap/paths.php
, trouvez la ligne de code suivante:
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../public',
Et changez les en:
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../',
Dans index.php
, trouvez ces lignes:
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
Et changez les en:
require __DIR__.'/laravel_code/bootstrap/autoload.php';
$app = require_once __DIR__.'/laravel_code/bootstrap/start.php';
J'ai essayé ceci sur Laravel 4.2
Renommez le server.php
dans le dossier racine de votre Laravel en index.php
et copiez le fichier .htaccess
du répertoire /public
vers votre Laravel. dossier racine.
J'espère que ca fonctionne
Voici des étapes simples à suivre pour supprimer public en URL (Laravel 5)
1: Copier tous les fichiers du dossier public et les coller dans le dossier racine laravel
2: Ouvrez index.php et changez
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 ça.
Ne vous méprenez pas avec l’option ci-dessous que j’utilise et qui vous sera utile aussi. Mettez les mots ci-dessous dans votre racine.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [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=$1 [PT,L]
</IfModule>
Ça marche... !!!
Laravel Utilise ci-dessous .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]
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. Sinon, activez-le à l'aide de la commande Sudo a2enmod rewrite
. Il activera le module de réécriture. S'il est déjà activé, le message Module rewrite already enabled
s'affichera.
2) Créez un hôte virtuel pour répertoire public afin qu'au lieu de donner http://localhost/public/index.php
, nous pourrons utiliser comme ceci http://example.com/index.php
. [donc le nom du dossier public sera masqué]
3) Créez ensuite un fichier .htaccess qui cachera le fichier index.php de votre URL qui doit se trouver dans le répertoire racine (dossier public).
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
Cela a probablement très peu à voir avec Laravel et tout ce qui concerne vos configurations Apache.
Avez-vous accès à la configuration de votre serveur Apache? Si tel est le cas, consultez la documentation suivante:
En général, vous ne devez utiliser des fichiers .htaccess que lorsque vous n'avez pas accès au fichier de configuration du serveur principal. Par exemple, il existe une idée fausse commune selon laquelle l’authentification de l’utilisateur doit toujours être effectuée dans des fichiers .htaccess et, au cours des dernières années, une autre idée fausse selon laquelle les directives mod_rewrite doivent figurer dans des fichiers .htaccess. Ce n'est simplement pas le cas. Vous pouvez définir des configurations d’authentification d’utilisateur dans la configuration du serveur principal. C’est en fait la meilleure façon de procéder. De même, les directives mod_rewrite fonctionnent mieux, à bien des égards, dans la configuration du serveur principal.
... En général, l'utilisation des fichiers .htaccess doit être évitée autant que possible. Toute configuration que vous envisageriez de placer dans un fichier .htaccess peut également être effectuée de manière efficace dans une section du fichier de configuration de votre serveur principal.
Source: documentation Apache .
La première raison pour laquelle je mentionne cela est qu'il est préférable d'éliminer complètement .htaccess
si vous le pouvez et d'utiliser une balise Directory
à l'intérieur d'une balise VirtualHost
. Cela étant dit, le reste de ceci va supposer que vous vous en tenez à la route .htaccess
pour une raison quelconque.
Pour décomposer cela, quelques choses pourraient se passer:
Je remarque, peut-être inutilement, que votre fichier s'appelle .htacces
dans votre question. J'imagine que c'est une faute de frappe, mais vous l'avez peut-être oubliée et qu'il ne manque en fait que la deuxième seconde, 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 stimulant. .
Votre serveur ne peut pas autoriser .htaccess
. Pour vérifier cela, allez dans votre fichier de configuration Apache. Dans les versions modernes d'Apache, cela ne se trouve généralement pas dans un fichier de configuration. Assurez-vous donc que vous utilisez celui qui pointe vers votre application, où qu'elle existe. Changement
AllowOverride none
à
AllowOverride all
En guise de suivi, les documents Apache recommandent également que, pour des raisons de sécurité, ne le fassiez pas pour tous les dossiers si vous envisagez de réécrire .htaccess
. Faites-le plutôt pour les dossiers auxquels vous devez ajouter .htaccess
.
Avez-vous mod_rewrite
activé? Cela pourrait être la cause des problèmes. Je remarque que vous avez la balise en haut <IfModule mod_rewrite.c>
. Essayez de commenter ces balises et redémarrez Apache. Si vous obtenez une erreur, c'est probablement parce que vous devez activer mod_rewrite
: Comment activer mod_rewrite pour Apache 2.2
J'espère que cela t'aides. J'ai cité certains des problèmes les plus courants, mais plusieurs autres pourraient être plus banals ou uniques. Une autre suggestion sur un serveur de dev? Réinstallez Apache. Si possible, faites-le à partir d'une source différente avec un bon tutoriel.
Laravel est déjà livré avec une jolie URL .htaccess ... vous devriez être prêt à sortir de la boîte ... http://laravel.com/docs/installation#pretty-urls
Assurez-vous que mod_rewrite est activé et que votre chemin personnel est défini sur le répertoire public de votre application.
Pour Laravel 4 & 5:
server.php
dans votre dossier racine Laravel en index.php
.htaccess
du répertoire /public
dans votre dossier racine Laravel .C'est ça !! :)
Pour ce faire, vous devez suivre les étapes suivantes:
Mappez votre domaine dans le dossier public de votre projet (c'est-à-dire/var/www/html/yourproject/public) (si vous utilisez linux)
Allez dans votre dossier public éditez votre fichier .htaccess
ici
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
, cela protège cela.J'espère que cela aide comme ça l'a fait pour moi.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Je viens d'installer Laravel 5 pour un projet et il y a un fichier dans la racine appelé server.php
.
Changez-le en index.php
et ça marche ou tapez dans le terminal:
$cp server.php index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
utiliser ceci dans .htaccess et redémarrer le serveur
Assurez-vous également que le moteur de réécriture est activé après la modification du fichier .htaccess.
Sudo a2enmod rewrite
Renommez le server.php
dans le dossier racine de votre Laravel en index.php
et copiez le fichier .htaccess
du répertoire /public
vers votre Laravel. dossier racine.