2017-03-04 1 views
0

Je travaille sur un site web sur ma machine locale en utilisant PHP.
Dans mon fichier .htaccess, j'ai la ligne suivante:.htaccess et la variable GET []

RewriteRule ^project-details/([a-zA-Z0-9-]+)/ project-details.php?pn=$1 [NC,L] 

Sur la page produits, je les articles contenant un lien comme ./product-details/icecap-mouse249/ ... que le fichier .htaccess à son tour prendre et attribuer " icecap-mouse249 "au" pn "trouvé à la fin de la ligne: ?pn=$1 [NC,L]. Lorsque vous cliquez sur l'élément, la personne est alors redirigée vers la page des détails du produit. Dans cette page, j'ai la ligne suivante:

$pn = $_GET['pn']; 

Cela permet à l'URI de tirer la valeur « pn » et l'affecter à la variable $pn et utiliser la variable pour extraire des données à partir d'une base de données et afficher toutes les informations de ce produit particulier. Donc, cela fonctionne localement sur ma machine, mais quand je télécharge les fichiers, la page ne tire rien avec $_GET[pn].

Les travaux page Détails du produit parce que quand je hardcode la valeur à $pn comme dans:

$pn = 'icecap-mouse249'; 

la page affiche correctement ... tirant les données de la db.

J'ai fait un phpinfo(); pour voir si le mod_rewrite est activé, mais la section "Modules chargés" de la page phpinfo ne s'affiche pas. J'ai fait un CTRL + F pour voir si je pouvais trouver le 'mod_rewrite' à travers l'outil FIND, mais rien ne s'affiche.

Ce qui me tracasse, c'est que cela fonctionne localement sur ma machine.

J'ai passé une heure avec mon fournisseur d'hébergement ... et ils n'ont pas aidé.

J'espère que je me suis expliqué correctement et que toute idée serait grandement appréciée. Je vous remercie.

Répondre

0

Votre code est correct

Vous semblez avoir affaire à des configurations de serveur spéciales. Essayez de désactiver multiview (ajouter à .htaccess) qui pourrait causer des problèmes dans 1and1, et essayez également d'ajouter séparément AllowOverride tout. Après avoir chargé le fichier, lorsque vous cliquez sur votre lien, la page affiche-t-elle des erreurs? Est-ce qu'il affiche quelque chose du tout?

Vous avez dit, vous avez vos liens pointant vers ./product-details/icecap-mouse249/. Assurez-vous que la page où vous mettez vos liens est dans la diretory racine comme:

http://example.com/page-with-links.php

Mais si la page avec les liens est en dehors du répertoire racine il ne fonctionnera pas.

http://example.com/xyz/page-with-links.php

C'est parce que vous demandez de chercher ^project-details ce qui signifie

http://localhost/project-details/any-string/ ou http://example.com/project-details/any-string/

+0

Merci pour regarder par-dessus mon code. Tous mes fichiers sont dans le répertoire racine, avec le fichier .htaccess. La chose étrange est que les pages Web fonctionnent sur mon serveur local que j'ai sur mon ordinateur portable (XAMPP), il fonctionne sur le serveur GoDaddy (quand je l'ai eu là, mais j'ai depuis transféré sur 1and1) ... et c'est là ne fonctionne pas ... sur le serveur 1and1. J'ai parlé au service client, mais ils ne pouvaient pas faire beaucoup plus que juste confirmer si le mod_rewrite était activé sur la configuration d'apache; qu'ils ont dit qu'ils étaient. Donc, je suis déconcerté maintenant. – Lexiriam

+0

J'ai édité la réponse. Essayez d'ajouter au fichier .htacces "Options -MultiViews et AllowOverride All". – docliving

+0

J'ai essayé d'ajouter ce que vous avez recommandé et ne fonctionnait toujours pas. Je vais devoir continuer à dépanner. J'ai fait des recherches sur StackOverflow avec le même problème; malheureusement rien n'a fonctionné pour moi. Merci, de toute façon. – Lexiriam