D'accord, j'ai un serveur Apache localhost opérationnel avec PHP et MySql. Maintenant, je veux aussi pouvoir utiliser un fichier .htaccess
et RewriteRule
, mais je ne sais pas trop où le mettre.
J'ai ces répertoires:
C:\dev\progs
où Apache PHP et MySQL sont stockés, chacun dans son propre sous-répertoire, c'est-à-dire. C:\dev\progs\Apache
et ainsi de suite ...
C:\dev\www
où tous les fichiers du site sont stockés.
J'ai besoin de savoir où placer le fichier .htaccess
, quelle configuration je dois faire et si mes espoirs et mes rêves ne servent à rien.
Merci
.htaccess est un fichier de configuration qui devrait être stocké à l'emplacement de votre page. En bref, il devrait être dans c:\dev\www
dans votre cas, mais vous devriez lire ceci aussi. BTW n'oubliez pas d'activer mod_rewrite en supprimant un hachage de la ligne où il réside
LoadModule rewrite_module modules/mod_rewrite.so
et activez .htaccess en changeant
AllowOverride None
à
AllowOverride All
Activer .htaccess sur les serveurs Apache dans localhost
1) Find your Apache directly which uses the php installation .
2) Open your httpd.conf with notepad, Which is located in the path \Apache\conf directory
3) Find the code like below
#LoadModule rewrite_module modules/mod_rewrite.so
4) Remove # from above code
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All <--- make sure this is not set to "None"
5) Save httpd.conf file
6) Restart your Apache server
Vous placez le fichier .htaccess
dans le répertoire Web que vous voulez que le code contrôle (et tous les sous-répertoires). Pour une réécriture, il va généralement dans le répertoire racine et agit sur la page index.php.
Par exemple, si vous placez le fichier .htaccess
dans le répertoire\dev\www\et que votre fichier .htaccess
a quelque chose comme RewriteRule ^(.*)$ /index.php?/$1 [L]
, il s’agit d’une expression rationnelle qui dit: obtenez tous les caractères de l’URL et ajoutez-les au script /index.php?
. Le /$1
est une référence en arrière dans regex.
Essaye ça.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /projectfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /projectfolder/index.php [L]
</IfModule>