0
votes

Suppression / public de l'URL dans Laravel 7

Même s'il existe des centaines de questions similaires, mais aucune ne résout réellement mon problème. J'ai configuré une application Laravel 7.14.1, et je l'ai téléchargée sur un hôte partagé.

Pour la faire fonctionner sur un hôte partagé, j'ai effectué les étapes suivantes:

1- Renommé server.php en index.php

2- Déplacement du .htaccess vers root

3- Dans .htaccess j'ai mis les règles suivantes

Route::get('/test', function () {
    return 'HI';
});

4 - Création d'une route de test comme suit:

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]

Maintenant, lorsque je visite domain.com/test , cela me donne une erreur 404 Mais quand je visite doamin.com/public/test cela fonctionne

Comment puis-je supprimer la partie / public de mon URL?


7 commentaires

vous devez vous assurer que le dossier "public" est le répertoire de base. si vous utilisez lampe ou xxamp, ou wamp.


C'est un hôte partagé, comment puis-je faire ça?


dans ce cas, vous devez télécharger votre application laravel au-dessus de votre dossier d'hébergement partagé public_html et le contenu du dossier public reste dans public_html


J'ai peur de ne pas pouvoir faire ça, j'ai une structure spécifique.


commencez par télécharger votre projet sur la racine principale, puis déplacez le dossier public vers public_html .. et modifiez la méthode d'enregistrement du fournisseur de services pour lire les données de public_html


Quelqu'un peut-il expliquer davantage pourquoi c'est bon, dans une réponse séparée? Merci!


demandez à votre responsable système de définir DocumentRoot sur le dossier public.


3 Réponses :


0
votes

Voici les étapes que vous pouvez suivre pour héberger votre application laravel sur un hébergement mutualisé (cpanel)

1 étape: Connectez-vous au tableau de bord de votre compte d'hébergement partagé (cpanel) puis recherchez l'icône du gestionnaire de fichiers, puis cliquez dessus

 entrez la description de l'image ici

 entrez la description de l'image ici

Cliquez sur public_html , en fait c'est là que nous téléchargeons normalement le contenu de notre application Web, alors téléchargez votre projet laravel ici, mais nous devons faire un travail d'extraction pour que notre projet fonctionne, veuillez suivre les étapes suivantes

2. Étape: Organisez votre projet laravel

 entrez la description de l'image ici

Créez un dossier à la racine principale de votre projet laravel, n'importe quel nom conviendra, le mien je l'appelle système comme indiqué ci-dessous entrez la description de l'image ici

Ensuite, je déplace tous les autres dossiers sauf public vers ce nouveau dossier créé.

 entrez la description de l'image ici

Ici, vous obtiendrez

 entrez la description de l'image ici

Prend tout votre contenu public en dehors de la racine principale, comme indiqué ci-dessous

 entrez la description de l'image ici

Alors voici ce qui en résultera

 entrez la description de l'image ici

Vous pouvez supprimer le dossier public ou le laisser

Étape 3: Modifiez le fichier index.php trouvé dans votre racine principale

 entrez la description de l'image ici

Nous devons modifier les numéros de code de ligne 22 et 36 comme suit, comme indiqué ci-dessous

NB: Le secret derrière est de dire à notre fichier index.php où il peut trouver ces deux fichiers

Vous pouvez tester votre projet en accédant à votre domaine.

 entrez la description de l'image ici

4. Étape : Conclusion,

Il y a un package intéressant qui résume tout ce que nous avons fait en tant que package laravel s'il vous plaît jeter un oeil, cliquez ici


0 commentaires

0
votes

La solution la plus simple et la plus sûre pour les hébergements partagés:

  1. Accédez à votre chemin racine Laravel / Lumen depuis SSH
  2. Exécutez mv .htaccess .htaccess-BACKUP pour sauvegarder votre .htaccess
  3. actuel
  4. Exécutez cp public / index.php ./ && cp public / .htaccess ./
  5. Profitez :)

REMARQUE: Si vous n'avez pas d'accès SSH, vous pouvez faire exactement la même chose manuellement à partir de cPanel> Gestionnaire de fichiers


0 commentaires

0
votes

Un moyen simple de résoudre ce problème.

  1. Tout d'abord, téléchargez le contenu du dossier public sur votre ordinateur local vers public_html sur le serveur Web.
  2. importez tous les autres fichiers et dossiers en dehors de public_html.
  3. et c'est fait, aucune mise à jour des fichiers de configuration n'est nécessaire.

Dites-moi comment ça se passe


0 commentaires