J'ai besoin de 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 commelocalhost/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 cela?
mod_rewrite
est activé./var/www/project_name/public
Réponses:
Option 1: utiliser .htaccess
S'il n'y est pas déjà, créez un fichier .htaccess dans le répertoire racine de Laravel. Créez un
.htaccess
fichier dans votre répertoire racine Laravel s'il n'existe pas déjà. (Normalement, c'est sous votrepublic_html
dossier)Modifiez le fichier .htaccess afin 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/".
Option 2: déplacer des éléments du répertoire '/ public' vers le répertoire racine
Créez un nouveau dossier dans votre répertoire racine et déplacez tous les fichiers et dossiers à l'exception du dossier public. Vous pouvez l'appeler comme vous le souhaitez. J'utiliserai "laravel_code".
Ensuite, déplacez tout hors du répertoire public et dans le dossier racine. Cela devrait aboutir à quelque chose de similaire à ceci:
Après cela, tout ce que nous avons à faire est de modifier les emplacements dans le
laravel_code/bootstrap/paths.php
fichier et leindex.php
fichier.Dans
laravel_code/bootstrap/paths.php
recherchez 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';
Source: Comment supprimer / public / de l'URL dans Laravel
la source
etc/apache2/apache2.conf
évolution deAllowOverride None
laAllowOverride All
où vous voyez la configuration d'annuaire,<Directory /var/www/></Directory>
.<Directory ...
configuration d' Apache contientAllowOverride All'
quelque chose comme ceci:<Directory "/var/www/html/laravel/public"> Options Indexes FollowSymLinks MultiViews **AllowOverride All** </Directory>
J'ai essayé ceci sur Laravel 4.2
Renommez le
server.php
dans le dossier racine de votre Laravelindex.php
et copiez le.htaccess
fichier du/public
répertoire vers votre dossier racine Laravel.J'espère que ça marche
la source
Ne vous méprenez pas avec une autre option, l'extrait ci-dessous que j'utilise et vous sera également utile. Mettez les htacces ci-dessous dans votre racine.
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
Accédez à 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]
la source
VOICI DES ÉTAPES SIMPLES POUR SUPPRIMER PUBLIC IN URL (Laravel 5)
1: Copiez tous les fichiers du dossier public et collez-les dans le dossier racine de laravel
2: Ouvrez index.php et modifiez
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, le 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.
la source
1) Vérifiez si mod_rewrite est activé. Allez dans le
/etc/apache2/mods-enabled
répertoire et voyez si lerewrite.load
est disponible. Sinon, activez-le à l'aide de la commandesudo a2enmod rewrite
. Cela activera le module de réécriture. S'il est déjà activé, il affichera le messageModule rewrite already enabled
.2) Créez un hôte virtuel pour le répertoire public afin qu'au lieu de donner,
http://localhost/public/index.php
nous puissions l'utiliser comme çahttp://example.com/index.php
. [donc le nom du dossier public sera masqué]3) Ensuite, créez un .htaccess qui masquera l'index.php de votre url qui doit être dans le répertoire racine (dossier public)
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
la source
mod_rewrite
handicapé.Cela n'a probablement que très peu à voir avec Laravel et tout à voir avec vos configurations Apache.
Avez-vous accès à la configuration de votre serveur Apache? Si tel est le cas, vérifiez ceci dans la documentation:
La raison pour laquelle je mentionne cela en premier est qu'il est préférable de s'en débarrasser
.htaccess
complètement si vous le pouvez et d'utiliser uneDirectory
balise à l'intérieur d'uneVirtualHost
balise. Cela étant dit, le reste supposera que vous vous en tenez à l'.htaccess
itinéraire pour une raison quelconque.Pour décomposer cela, plusieurs choses pourraient se produire:
Je note, peut-être inutile, que votre dossier est nommé
.htacces
dans votre question. Je suppose que c'est une faute de frappe, mais si vous l'avez négligée et qu'il manque en fait la 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 difficile. .Votre serveur ne peut pas autoriser
.htaccess
. Pour vérifier cela, accédez à votre fichier de configuration Apache. Dans les versions Apache modernes, ce n'est généralement pas dans un fichier de configuration, alors assurez-vous que vous utilisez celui qui pointe vers votre application, où qu'elle existe. Changementà
En guise de suivi, les documents Apache recommandent également, pour des raisons de sécurité, de ne pas le faire pour chaque dossier si vous
.htaccess
envisagez de réécrire. À la place, faites-le pour les dossiers auxquels vous devez ajouter.htaccess
.Avez-vous
mod_rewrite
activé? Cela pourrait être à l'origine 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, c'est probablement parce que vous devez activermod_rewrite
: Comment activer mod_rewrite pour Apache 2.2J'espère que cela t'aides. J'ai cité certains des problèmes les plus courants, mais il y en a plusieurs autres qui pourraient être plus banals ou uniques. Une autre suggestion sur un serveur de développement? Réinstallez Apache. Si possible, faites-le à partir d'une source différente avec un bon tutoriel.
la source
Pour Laravel 4 & 5:
server.php
dans votre dossier racine Laravel enindex.php
.htaccess
fichier du/public
répertoire vers votre dossier racine Laravel .C'est ça !! :)
la source
Assurez-vous également que Rewrite Engline est activé après la modification du fichier .htaccess
la source
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 d'accès personnel est défini sur le répertoire public de votre application.
la source
mod_rewrite
et j'ai copié le code qui se trouve sur cette page et toujours sans travauxServerAdmin webmaster@localhost DocumentRoot /home/web-apps/myproject/public
user
est l'endroit où je garde les photos, aussi j'ai un fichier lame appeléuser
, quand j'écris dans l'URLmyproject.com/user
me montre le contenu du dossier, les imagesPour ce faire, vous devez effectuer les étapes suivantes, qui sont les suivantes
Mappez votre domaine vers le dossier public de votre projet (par exemple / var / www / html / yourproject / public) (si vous utilisez Linux)
Accédez à votre dossier public, modifiez-y votre
.htaccess
fichierAddHandler 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.la source
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
utilisez ceci dans .htaccess et redémarrez le serveur
la source
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>
la source
Je viens d'installer Laravel 5 pour un projet et il y a un fichier à la racine appelé
server.php
.Changez-le en
index.php
et cela fonctionne ou tapez le terminal:la source
Renommez le
server.php
dans le dossier racine de votre Laravelindex.php
et copiez le.htaccess
fichier du/public
répertoire vers votre dossier racine Laravel.la source
Cela fonctionne et c'est 100% SÉCURISÉ
https://medium.com/@matteovirgilio/laravel-5-how-to-change-the-public-folder-and-secure-private-files-on-shared-hosting-a8e2e5b9b25f
la source
Si vous utilisez IIS Windows Server, ajoutez un
web.config
fichier dans le dossier racine et mettez le code ci-dessous:<?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>
et si vous utilisez,
.htaccess
utilisez celui-ci:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
la source
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)/(public)/(index.php)/$ $1/$4 [L] </IfModule>
la source
Selon Laravel 5.3 les choses ci-dessus ne fonctionneront pas correctement, mais soyez calme et suivez les étapes ci-dessous:
Étape 1. Allez à l'intérieur du projet laravel
Étape 2. Créez un répertoire / dossier aléatoire, par exemple. laravelcode
Étape 3. Déplacez tous les dossiers et fichiers (sauf le dossier public )
Étape 4. Déplacez tous les dossiers et fichiers qui se trouvent dans le dossier public vers le projet laravel
Étape 5. Maintenant, dans le projet laravel, il y a un fichier index.php, veuillez ouvrez-le et changez les chemins de dossier pour bootstrap comme par le nouveau chemin comme précédemment c'était "require DIR . '/ .. / bootstrap / autoload.php';" maintenant il deviendra "exiger DIR . '/ laravelcode / bootstrap / autoload.php';"
Voilà, lancez simplement votre URL sans public et index.php comme ci-dessous http: // localhost / blog /
la source