2010-07-22 7 views
0

Je travaille sur une application PHP, Tout fonctionne parfaitement, Le seul problème est.Comment faire une application PHP pour utiliser les URL réelles Si Mod-Rewrite est désactivé?

J'ai activé SEO URL amical, qui ré-écrit de l'URL de l'URL à virtuel (je sais que vous le connaissez)

Ex: hxxp: //www.website.com/index.php Page = environ-nous pour hxxp: //www.website.com/page/about-us/

ce que je veux atteindre est Si l'URL Rewrite SEO/Mod est désactivé, l'utilisateur doit être en mesure d'accéder les URL directes/réelles.

En bref, si Mod-Rewrite est activé, l'application Web doit automatiquement utiliser les URL compatibles SEO, sinon les URL par défaut.

+0

"l'application web devrait utiliser automatiquement" ... use * where *? – Dolph

+0

disons, l'URL réelle est hxxp: //www.website.com/index.php? Page = login Au début, chaque fois que l'utilisateur visite le site Web, il devrait automatiquement aller à l'adresse ou hxxp: //www.website.com/login/ (je l'ai déjà fait en utilisant .htaccess) Si le Mod-rewrite est désactivé (si le .htaccess ne fonctionne pas), alors l'application devrait automatiquement rediriger le utilisateur à hxxp: //www.website.com/index.php? page = login – Roccos

Répondre

1

Vous devrez remplacer toutes les occurrences de liens par une fonction qui vérifie si mod_rewrite est disponible, ou plus probablement, une valeur de configuration. Il retournera alors le lien approprié.

getLink("?page=about-us")

0

Utilisez un < IfModule> pour éviter de casser les autres directives de .htaccess et 500 ou des erreurs internes du serveur si Apache ne comprend pas vos règles. Ajoutez également une seule réécriture de réécriture non réécrite (avant toutes les autres);

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    #The next rule does no rewriting, but sets en environmental variable. 
    RewriteRule .* - [E=RewriteCapable:On] 
</IfModule> 

Dans votre fichier (magasin comme paramètre ou vérifier sur les lieux générateurs/sortie des urls):

if(isset($_SERVER['RewriteCapable'])){ 
    //make fancy urls 
} else { 
    //cludgy old-style urls 
} 
0

Hmm .. cela peut avoir besoin pensé à un peu pour obtenir la bonne solution .. me suivre ici si vous voulez :)

Les URL SEO ont été principalement introduites pour (1) inclure du texte lisible par l'homme dans les URL et (2) pour se débarrasser des paramètres GET. Pour regarder le point (2) un instant, c'était le pilote principal au départ, car les gens utilisaient about.php? Id = 1, id = 2 ... id = 3457348 pour obtenir la même page listée dans le moteurs de recherche plusieurs fois, qui bien sûr ont été détectés et arrêtés, alors parfois les gens passeraient une session id = 24234234 qui serait également arrêtée comme étant une page dupliquée (à juste titre car elle utilise HTTP comme protocole stateful quand ce n'est pas le cas). Avec une URL, tout du premier caractère à un # d'un #fragment définit une ressource (du point de vue HTTP), donc à juste titre quand plusieurs URL différentes se résument à la même 'page', elles sont en effet doublons. Ainsi, en annulant les paramètres GET, vous résolvez ce problème, qui n'est pas un problème depuis longtemps et qui n'existe pas depuis longtemps, il n'y a aucune raison de ne pas utiliser correctement les paramètres GET autres que vanity. Donc, vraiment vous ne résolvez aucun problème mais vous avez plutôt introduit un nouveau problème, en ce sens que vous voulez '/ page/about-us' et '? Page = about-us' pour aller à la même 'page' signifie que vous avez à nouveau des ressources en double et cela pourrait être détecté et vous pourriez être pénalisé. Ainsi, en introduisant des «URL SEO», vous avez créé le problème que les URL SEO ont été «inventées» pour contrecarrer. Cela ne laisse que le point sur les mots lisibles par l'homme dans l'URL.Les URL sont censées être transparentes, donc elles ne comptent pour rien dans la réalité, mais certaines sont toujours comme - je devrais donc demander ce qui ne va pas avec '/?/Page/about-us' ... et si vous ne faites rien Pas comme ça alors qu'est-ce qui ne va pas avec la création d'un fichier fixe avec le chemin du système de fichiers '/ page/about-us' qui inclut simplement votre index.php avec les bonnes variables ensemble?

Bien sûr, vous pouvez créer des pages en double et avoir à la fois des URL conviviales pour le référencement et des URL de param GET mais comme vous pouvez le voir, ce ne sera pas convivial pour le SEO maintenant?

+0

Eh bien, j'ai enseigné de cela, et toujours penser à ce sujet. Mais je veux donner aux utilisateurs la possibilité d'avoir les URL comme ils le veulent. (un peu comme la fonction permaliens de wordpress). – Roccos