2009-03-01 5 views
3

J'ai Joomla 1.5.9 en cours d'exécution avec php 5.2.8, mySQL 5.1.31 sur IIS7 sur une boîte de développement Vista 64. J'ai les deux paramètres SEO "Search Engine Friendly URLs" et "Utiliser Apache mod_rewrite" fonctionnent correctement.Problème lié aux URL de moteur de recherche Joomla sur IIS7

Je suis également en train de créer un site hébergé (avec www.mochahosting.com). Ils utilisent des versions légèrement plus anciennes du même logiciel: Joomla 1.5.5, PHP 5.2.6, mySQL 5.0.4x. Ils utilisent également IIS7, mais s'exécutent sous Windows 32.

Je ne peux pas obtenir l'un des paramètres SEO pour fonctionner sur le site hébergé (J'ai obtenu les paramètres de référencement pour travailler sur ma machine locale, avec à peu près la même configuration). Commençons par "Search Engine Friendly URLs" seulement pour garder les choses simples.

De plus, je n'ai pas encore de nom de domaine, donc j'utilise un alias de fichier hosts pour accéder au site. Je ne m'attends pas à ce que qui que ce soit passe par cette difficulté pour répondre à ma question, alors je vais juste décrire le problème et espérer que je fais un travail assez bon pour que les gens puissent comprendre ce qui se passe. Je vais utiliser http://nodomainyet.com/joomla156_mx comme URL de base (c'est-à-dire, la page d'accueil de joomla) pour les besoins de cette question. Oui, cela implique que Joomla est installé dans un sous-répertoire - je ne suis pas sûr que ce soit un problème ou non (ce n'est pas un problème sur ma boîte de dev).

Sur le problème. Si vous activez "URL de moteur de recherche", http://nodomainyet.com/joomla156_mx génère un 404 ("Composant non trouvé"). Dans la page d'erreur 404, il y a un lien qui va à http://nodomainyet.com/joomla156_mx/index.php - et ce lien fonctionne. Si j'éteins "Search Engine Friendly URLs" puis à la fois http://nodomainyet.com/joomla156_mx et http://nodomainyet.com/joomla156_mx/index.php travail. Il semble donc que tourner sur « Search Engine Friendly URLs » provoque la « redirection automatique » de http://nodomainyet.com/joomla156_mx-http://nodomainyet.com/joomla156_mx/index.php cesser de travailler ...

Maintenant, si je vais à http://nodomainyet.com/joomla156_mx/index.php et de là naviguer vers les différents liens du menu principal (J'utilise seulement le site joomla par défaut qui est installé avec une nouvelle instance de Joomla), alors tout fonctionne bien. Il va juste à http://nodomainyet.com/joomla156_mx qui ne fonctionne pas. Il est à noter que le lien "home" qui se trouve dans le menu principal va par défaut à http://nodomainyet.com/joomla156_mx.

J'ai comparé la sortie de phpinfo sur l'hôte à celle de ma boîte de dev et ne pouvait pas voir les différences qui provoqueraient cette question ...

Activation du second paramètre SEO - « Utilisation Apache mod_rewrite "- ne résout pas le problème (on pourrait le penser, puisque le but de ce paramètre est de se débarrasser de index.php dans l'URL). Les "Search Engine Friendly URLs" semblent généralement assez triviales pour se mettre au travail - il ne nécessite pas de règles web.config et de réécriture ... Je ne suis pas sûr de ce qui pourrait causer des problèmes.


Mise à jour - 2009-03-03

Je pensais que c'était une mauvaise idée de ne tourner le premier paramètre de SEO ("Search Engine Friendly URLs") de ("Utiliser Apache mod_rewrite ") (même si je peux simplement activer" Search Engine Friendly URLs "par lui-même sur ma machine locale et cela fonctionne bien). J'ai donc essayé quelques expériences supplémentaires

Je pensais que le problème était peut-être que la réécriture d'URL n'était pas correctement configurée dans IIS7 sur l'hôte. J'ai fait le (premier) fichier de test décrit dans http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module et cela a fonctionné - ce qui signifie que la réécriture d'URL fonctionne.

Ensuite, je pensais que peut-être le problème est que les règles de réécriture que l'on voit partout pour Joomla sur IIS7 doivent être réécrites pour prendre en compte le sous-répertoire. Comme je l'ai dit plus haut, les paramètres SEO fonctionnent bien sur ma machine locale. Joomla est également installé dans un sous-répertoire, et tout fonctionne correctement. Néanmoins, j'ai essayé de modifier la règle de réécriture de

<rewrite> 
    <rules> 
     <rule name="Imported Rule 1" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" negate="true" pattern="^/index.php" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="index.php" /> 
     </rule> 
    </rules> 
</rewrite> 

à

<rewrite> 
    <rules> 
     <rule name="Imported Rule 1" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" negate="true" pattern="^/joomla156mx/index.php" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="joomla156mx/index.php" /> 
     </rule> 
    </rules> 
</rewrite> 

(à savoir préfixer le nom du répertoire à la condition et l'action). Cela n'a pas fait de différence. Maintenant, je suis complètement nouveau pour réécrire les règles, donc j'ai peut-être foiré quelque chose. Je suppose que je trouve un peu suspect qu'il n'y ait pas de règle de redirection; Cela signifie que si je copie & coller une URL «réécrite», est-ce que quelque chose ne doit pas dire au serveur qu'il s'agit d'une URL inventée, et devrait être redirigé vers une URL réelle? Mais, encore une fois, tout cela fonctionne bien sur ma boîte locale avec des règles de réécriture vieilles, donc je peux aboyer sur le mauvais arbre.

Merci pour l'aide!

Répondre

2

Il s'avère que le problème était que la société d'hébergement n'utilisait pas FastCGI pour exécuter php. Même si l'on dit "API serveur = CGI/FastCGI" lors de l'exécution de phpinfo(), cela NE SUFFIT PAS pour garantir l'utilisation de fastcgi.

Quel est le problème avec l'utilisation de CGI ou ISAPI? Ils ont tous deux des problèmes avec la variable php _SERVER ["REQUEST_URI"], que Joomla SEO utilise.

Voir mon autre question pour savoir comment déterminer avec certitude si FastCGI est utilisé ou non: How to know for sure if FastCGI is being used to run php scripts

2

Les dernières étapes de cette page passent par Enabling Search Engine Friendly URLs.

Par défaut Joomla utilise des paramètres chaîne de requête pour tous les liens URL qu'il génère pour votre site web. Ce comportement peut être modifié en activant ce qui est appelé "Search Engine Friendly URL" dans Joomla. Cependant, cette fonctionnalité repose sur la fonctionnalité de réécriture d'URL qui doit être disponible sur le serveur Web . IIS 6.0 n'a pas l'URL capacités de réécriture, de sorte que vous pouvez utiliser l'un des produits de réécriture URL tiers , tels que ISAPI_Rewrite ou Ionics ISAPI Rewrite Filtre. IIS 7.0 a le support de réécriture d'URL , qui peut être activé par en installant Microsoft URL Rewrite Module pour IIS 7.0. Les instructions suivantes décrivent comment URL Rewrite Module pour IIS 7.0 peut être utilisé pour pour activer les URL propres dans Joomla.
D'abord, vous devrez télécharger et installer le module de réécriture d'URL de Microsoft. Une fois installé, créez et ouvrez un fichier web.config situé dans le dossier C: \ inetpub \ wwwroot \ Joomla. Collez le code XML suivant dans ce fichier.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Security Rule" stopProcessing="true"> 
      <match url="^(.*)$" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAny"> 
      <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" /> 
      <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" /> 
      </conditions> 
      <action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" /> 
     </rule> 
     <rule name="SEO Rule"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
      <add input="{URL}" negate="true" pattern="^/index.php" ignoreCase="false" /> 
      <add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="index.php" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
</configuration> 

Enregistrez le fichier web.config et navigateur web ouvert et d'ouverture de session à la console d'administration de Joomla à http://localhost/joomla/administrator/. Une fois connecté, accédez au site -> Menu mondial de configuration configure les paramètres de référencement comme ci-dessous:

  • Search Engine Friendly URLs - Oui
  • Utiliser Apache mod_rewrite - Oui
  • Ajouter un suffixe aux URL - Non
  • Sauvegarder la configuration par en cliquant sur "Appliquer", puis naviguez jusqu'à http://localhost/joomla/.Vous verrez que maintenant tous les liens dans les pages Joomla ont des URL sans paramètres de chaîne de requête et si vous cliquez sur l'un de ces liens, le serveur retournera la bonne réponse:

    +0

    Merci pour la réponse. Cependant, j'ai déjà suivi des instructions similaires sur mon ordinateur local et sur le site hébergé. cela fonctionne sur ma machine locale mais pas sur le site hébergé ... J'ai donc besoin d'un peu plus de détails sur la façon de diagnostiquer ceci sur le site hébergé. – Jimmy

    0

    J'ai un site www.carooolglobal.com, toutes les fonctionnalités fonctionnent très bien avec tous les réglages de référencement mis à Si je définis l'un des paramètres de référencement sur Oui, et que j'effectue une recherche à partir du formulaire de recherche à gauche sur la page d'accueil, il affiche correctement les résultats sur index.php, mais lorsque je clique sur le lien de nom de le résultat de la recherche, il devrait ouvrir le profil de la personne dans la fenêtre pop-up, mais montre la fenêtre pop

    Vous ne pouvez pas être visiter cette page car:

    un hors-bookmark/favori un moteur de recherche qui a un listing périmé pour ce site une adresse erronée vous n'avez pas accès à cette page La ressource demandée n'a pas été trouvée. Une erreur s'est produite lors du traitement de votre demande. S'il vous plaît essayer une des pages suivantes:

    Page d'accueil

    Si les difficultés persistent, s'il vous plaît contacter l'administrateur de ce site.

    Je suis désemparés

    Cordialement Kislay

    0

    Je ne sais pas si cela était encore couvert, je regardais, mais je suis bien une des choses manquantes.

    Si vous êtes des problèmes avec votre moteur de recherche des liens amicaux, allez dans le dossier où est installé joomla, et renommer votre fichier .htaccess htaccess.txt

    Cela devrait résoudre le problème 404.

    +0

    '.htaccess' n'est pas utilisé par IIS7 – rtpHarry