2017-08-07 1 views
0

J'ai travaillé sur un projet qui utilise pushstate pour gérer la navigation sur le site. Le projet est actuellement hébergé sur un compte d'hébergement partagé Godaddy et je viens d'installer un serveur Linux Amazon EC2 avec HTTPD et j'ai transféré les fichiers vers le nouveau serveur. Je devais ajouter un fichier .htaccess pour aider à la navigation pushstate afin qu'il ne soit pas 404 lorsque j'essaie d'aller à http://example.com/page1 par exemple. Lorsque j'essaie d'accéder à une page comme http://example.com/page1 sur le serveur de godaddy, il se comporte comme il se doit - il n'essaie pas d'accéder à la page actuelle mais utilise la page racine et ajoute url chemin/page1 et mon javascript s'occupe de montrant visuellement le contenu de page1. Cependant, sur le serveur Amazon, il m'amène à une page 404. Je suis relativement novice en matière de .htaccess et de push state, je devais donc me débarrasser de ce que je pouvais trouver en débordement de pile pour m'aider à le faire fonctionner (sur le serveur Godaddy au moins). Voici le fichier:.ht l'accès ne fonctionne pas sur le serveur Amazon Linux

RewriteEngine On 
RewriteRule ^([^/d]+)/?$ index.html?id=$1 [QSA] 

Je ne sais pas si je l'ai utilisé l'approche correcte ni pourquoi un serveur me donnerait un résultat différent à l'autre?

Merci

EDIT

donc je l'ai déjà mis le allowOveride à tous dans mon fichier httpd.conf comme ci-dessous:

<Directory "/"> 
    AllowOverride All 
</Directory> 

A noter ici que je utilise HTTPD plutôt que Apache2 - je ne suis pas sûr si cela pourrait faire une différence ou non, mais semble être la même procédure. J'ai également redémarré le serveur en utilisant sudo service httpd restart mais c'est toujours le même résultat. J'ai essayé l'option vhost et bien que je ne me souvienne pas exactement de ce que j'ai écrit pour cela, je l'ai appliqué à */80 donc je suis assez sûr qu'il a été écrit correctement.

Existe-t-il d'autres mesures que je peux prendre pour déboguer davantage et essayer de déterminer exactement où cela ne va pas?

Répondre

0

S'il vous plaît vérifier votre configuration apache2 (/etc/apache2/apache2.conf) pour le réglage ci-dessous:

<Directory "/"> 
AllowOverride None 
</Directory> 

Cela ne permettra pas les paramètres du serveur soient remplacés par des paramètres personnalisés dans le. fichier htaccess. Donc, si vous trouvez que dans votre configuration apache2 vous avez 2 options:

1) Remplacer avec AllowOverride All, enregistrez la configuration et redémarrer le service apache2 (applique serveur large)

2) le laisser tel quel et ajoutez AllowOverride All strictement à la configuration vhost pour votre site (s'applique uniquement pour le vhost où il est ajouté).

+0

Merci d'avoir soumis une réponse Bogdan, je viens de mettre à jour ma question, jetez un oeil –

+0

apache webserver est comme apache2 sous Ubuntu/Debian (comme httpd sur les distributions CentOS). Je vérifierais/var/log/httpd/error_log pour voir s'il y a des entrées là-bas qui pourraient offrir des informations supplémentaires sur votre problème ou des fichiers journaux d'erreur/accès vhost spécifiques –

+0

L'erreur que je reçois dans le journal des erreurs est Fichier fait n'existe pas:/var/www/html/site-feedback qui, selon moi, suggère que le fichier .htaccess n'est pas détecté ou que le serveur n'a pas autorisé le remplacement. –