Problème initial: Salut, j’ai un nouveau site Yii où je veux supprimer l’index.php de l’URL.
Exemple: “/index.php/site/index” doit être “/ site / index”
J’ai utilisé ce guide http://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x mais je ne reçois que 404.
J’espère que vous pourrez signaler une erreur ou m’aider à déboguer ce problème!
S’il vous plaît laissez-moi savoir si j’ai laissé de côté toute information pertinente.
OBS: La page d’accueil fonctionne comme prévu, les autres pages sont brisées.
Statut du problème: Il semble que ce soit un problème Apache / Ubuntu avec mod_rewrite.so
Après l’aide de différentes personnes, tout fonctionne maintenant: DI a dû installer “rewrit” pour le faire fonctionner, en écrivant Running a2enmod rewrit La configuration ci-dessous de mon système a résolu le problème pour moi, j’espère que ce thread aidera les autres problèmes similaires.
Server version: Apache/2.2.22 (Ubuntu) Server built: Nov 8 2012 21:37:45
AllowOverride All #... LoadModule rewrite_module modules/mod_rewrite.so
C’est tout le contenu du fichier
File does not exist: /.../htdocs/site, referer: http://.../htdocs/index.php/site/index
J’ai ajouté les points
kah@webaalborg:/etc/apache2/sites-available$ sudo service apache2 restart * Restarting web server apache2 [Mon Nov 26 20:16:35 2012] [warn] module rewrite_module is already loaded, skipping ... waiting [Mon Nov 26 20:16:36 2012] [warn] module rewrite_module is already loaded, skipping [ OK ]
... DocumentRoot /var/www Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all ...
RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php
'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'caseSensitive'=>false, 'rules'=>array( '/'=>'/view', '//'=>'/', '/'=>'/', ), ),
Si vous travaillez sous Linux (disons ubuntu), allez dans le chemin /etc/apache2/sites-available/
vous trouverez un fichier nommé par default
,
<--- ***root directory*** Options Indexes FollowSymLinks MultiViews AllowOverride all <---- ***change this line*** Order allow,deny allow from all
et je pense que votre problème sera résolu.
Merci.
Avez-vous AllowOverride
dans votre directive de répertoire?
AllowOverride All #...
Sinon, cela expliquerait pourquoi vos règles de réécriture ne fonctionnent pas.
Essayez de mettre cela dans .htaccess
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Supprimez également la ligne “LoadModule rewrite_module modules / mod_rewrite.so” de httpd.conf et activez le module de réécriture à partir de la ligne de commande, en exécutant la réécriture a2enmod.
Options Indexes FollowSymLinks AllowOverride all <---- ***change this line*** Order allow,deny <---- ***change this line*** allow from all Require all granted