Question

J'ai une application Codeigniter qui fonctionne bien localement avec WAMP. Cependant, j'ai du mal à le faire fonctionner sur un serveur IIS. Veuillez noter que je ne veux pas activer les chaînes de requête.

Voici ce que j'ai actuellement dans mon fichier web.config:

    <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Clean URL" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>  

Cela provoque le chargement correctement de la page principale: www.website.com/policies

Cependant, lorsque je clique sur un élément pour aller sur: www.website.com/policies/policy/view/31

La page appropriée ne s'affiche pas. La page principale continue d'être affichée.

Le contrôleur est la politique et la fonction est View (). Les fichiers CodeIgniter sont dans un dossier / dossier sur le serveur.

Je pense que le problème peut être avec mon fichier web.config. Le fichier de configuration $ config ['base_url'] est calculé dynamiquement et est le bon. Le fichier de configuration $ config ['index_page'] est vide. Selon vous, qu'est-ce qui cause ce problème?

Merci à tous pour votre aide.

Était-ce utile?

La solution

Avez-vous examiné l'exemple dans les forums CI?

http://codeigniter.com/forums/viewthread/91954

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Rewrite to index.php">
                    <match url="index.php|robots.txt|images|test.php" />
                    <action type="None" />
                </rule>
                <rule name="Rewrite CI Index">
                    <match url=".*" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" pattern="css|js|jpg|jpeg|png|gif|ico|htm|html" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>  

Autres conseils

J'ai placé le code web.config suivant dans la racine et cela a parfaitement fonctionné.

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="Imported Rule 1" stopProcessing="true">
                        <match url="^(.*)$" ignoreCase="false" />
                        <conditions logicalGrouping="MatchAll">
                            <add input="{URL}" pattern="^system.*" ignoreCase="false" />
                        </conditions>
                        <action type="Rewrite" url="/index.php?{R:1}" />
                    </rule>
                    <rule name="Imported Rule 2" stopProcessing="true">
                        <match url="^(.*)$" ignoreCase="false" />
                        <conditions logicalGrouping="MatchAll">
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                            <add input="{R:1}" pattern="^(index\.php|images|robots\.txt|css)" ignoreCase="false" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="index.php?{R:1}" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>

UFF !!! Oh! Mon Dieu!!!

Récemment, j'avais créé un panneau de commande d'administration avec CI et Crud. Cela fonctionnait très bien avec Wamp sur mon serveur local avec une jolie URL et une redirection. Je parlais du CI est le meilleur cadre que j'ai jamais travaillé. C'est si facile à utiliser et à des acclamations très bien documentées !! à codeigniter.

Mais quand j'avais déplacé mon panneau d'administration sur IIS Server 7.xx, cela semble que mon cauchemar commence. Tout n'arrêtait pas de redirection, aucune erreur affiche rien ne se passait. J'avais tellement peur que cela se produise. Je creuse Google, Stack Overflow, CI Forum près de 6 heures. Je n'ai rien reçu de n'importe où. J'étais si triste :(

Je ne peux pas penser ce que je devrais faire. Ensuite, je me suis rendu cool et calme et j'ai commencé à revoir tout étape par étape qui est ici:

1.  Set error reporting on
2.  Check php info
3.  Check redirect/rewrite
4.  Check mysql/mysqli extension loaded or not in IIS server
5.  Converted my .htaccess file rule with web.config rule (Really helped me)
6.  Put web.config file in main directory (CI working folder) not in root folder

Comment convertir .htaccess dans web.config?

Ensuite, j'ai constaté que tout est correct, sauf que l'extension «mysqli» n'était pas chargée sur le serveur IIS et que mes informations d'identification de configuration de base de données étaient fausses. Ensuite, j'ai apporté des modifications dans PHP.ini (vérifiez 'phpinfo ()' pour trouver le chemin PHP.ini sur IIS Server) Ligne n ° 881 avec extension non Comment = PHP_MYSQLI.DLL.

Voici mes paramètres de configuration CI:

$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

Après cela, rouvrez mon panneau d'administration CI maintenant !!!!!! Tout wow !! wow!! travailler comme charme :) il il il…. J'étais si heureux :) :)

Voici mon fichier web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Imported Rule 1">
                    <match url="(.*)" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTPS}" pattern="off" ignoreCase="false" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{URL}" redirectType="Found" />
                </rule>
                <rule name="Imported Rule 1-1" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="^system.*" ignoreCase="false" />
                    </conditions>
                    <action type="Rewrite" url="index.php?/{R:1}" appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 2" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="^application.*" ignoreCase="false" />
                    </conditions>
                    <action type="Rewrite" url="/index.php?/{R:1}" appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 3" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php?/{R:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Voici mon joli type d'URL

https://mysite.abc.com/administrator/admin/showUsers

administrator is my  admin folder

admin is my controller

and showUsers in my controller method

J'espère que ma mauvaise expérience aidera quelqu'un :)

Il s'avère que je n'ai pas réécrit l'installation. Cela a fait l'affaire:

http://www.iis.net/downloads/microsoft/url-rewrite

Je ne sais pas si la page d'erreur de Codeigniter peut avoir masqué l'erreur quelque peu, car je ne pouvais pas déterminer qu'elle n'a pas été installée à partir de l'écran d'erreur du navigateur. La visionneuse d'événements, les journaux IIS et les journaux PHP n'étaient pas utiles pour cette situation.

You can like this,
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll">
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
          </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top