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?
3 Réponses :
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
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 p>
2. Étape: Organisez votre projet laravel
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
Ensuite, je déplace tous les autres dossiers sauf public vers ce nouveau dossier créé.
Ici, vous obtiendrez
Prend tout votre contenu public en dehors de la racine principale, comme indiqué ci-dessous
Alors voici ce qui en résultera
Vous pouvez supprimer le dossier public ou le laisser
Étape 3: Modifiez le fichier index.php trouvé dans votre racine principale
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.
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 a>
La solution la plus simple et la plus sûre pour les hébergements partagés:
mv .htaccess .htaccess-BACKUP
pour sauvegarder votre .htaccess
cp public / index.php ./ && cp public / .htaccess ./
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
Un moyen simple de résoudre ce problème.
Dites-moi comment ça se passe
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.