Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Problème avec .htaccess avec CMSMS 2.1 et Apache 2.4
#1

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.1
#~ Url du site :
#~ Hébergeur / Soft : host.fr
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 2.1.2
#~ Installed Modules:
#~ AceEditor2: 1.05
#~ AdminSearch: 1.0
#~ CGExtensions: 1.51.1
#~ CGGoogleMaps2: 0.99.3
#~ CGSimpleSmarty: 2.0.5
#~ CMSContentManager: 1.1
#~ CMSMailer: 5.2.14
#~ Captcha: 0.5.2
#~ DesignManager: 1.1.1
#~ FileManager: 1.5.2
#~ FormBuilder: 0.8.1.3
#~ Gallery: 2.1
#~ MicroTiny: 2.0.3
#~ ModuleManager: 2.0.2
#~ Navigator: 1.0.2
#~ News: 2.50.4
#~ Search: 1.50.2
#~ SiteMapMadeSimple: 1.2.8
#~ TinyMCE: 3.1
#~ Config Information:
#~ php_memory_limit:
#~ max_upload_size: 20000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ auto_alias_content: true
#~ locale:
#~ set_names: true
#~ timezone: Europe/Paris
#~ permissive_smarty: false
#~ Php Information:
#~ phpversion: 5.6.14-0+deb8u1
#~ md5_function: On (Vrai)
#~ json_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_ALL: 22527
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ test_file_timedifference: Une différence de date avec l'environnement PHP a été détectée. Cela peut causer des problèmes lorsque vous publiez des articles.
#~ test_db_timedifference: Une différence de date avec l'environnement PHP a été détectée. Cela peut causer des problèmes lorsque vous publiez des articles.
#~ create_dir_and_file: 1
#~ memory_limit: 128M
#~ max_execution_time: 30
#~ register_globals: Off (Faux)
#~ output_buffering: 4096
#~ disable_functions: pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority,
#~ open_basedir: /mnt/sites/T015/119913:/usr/share/php:/tmp
#~ test_remote_url: Valable
#~ file_uploads: On (Vrai)
#~ post_max_size: 20M
#~ upload_max_filesize: 20M
#~ session_save_path: Aucune vérification à cause de la restriction spécifiée par PHP open_basedir
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ check_ini_set: On (Vrai)
#~ curl: On
#~ Performance Information:
#~ allow_browser_cache: On (Vrai)
#~ browser_cache_expiry: 60
#~ php_opcache: On (Vrai)
#~ smarty_cache: Off (Faux)
#~ smarty_compilecheck: Off (Faux)
#~ smarty_cache_udt: Off (Faux)
#~ auto_clear_cache_age: On (Vrai)
#~ Server Information:
#~ Server Software: Apache/2.4.10 (Debian)
#~ Server Api: apache2handler
#~ Server Os: Linux 3.16.0-4-amd64 On x86_64
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.0.32
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ Permission Information:
#~ tmp: /mnt/sites/T015/119913/11258/tmp (0775)
#~ tmp_cache: /mnt/sites/T015/119913/11258/tmp/cache (0775)
#~ templates_c: /mnt/sites/T015/119913/11258/tmp/templates_c (0775)
#~ modules: /mnt/sites/T015/119913/11258/modules (0775)
#~ uploads: /mnt/sites/T015/119913/11258/uploads (0775)
#~ Masque de création de fichier (umask) : /mnt/sites/T015/119913/11258/tmp/cache (0775)
#~ config_file: 0640
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Bonjour.

Depuis la version Apache 2.4, les fichiers .htaccess doivent être modifiés :

==> "order deny,allow" devient "Require all denied"

A l'installation basique de CMSMS 2.1 sur le serveur distant tout c'est bien passé. Malheureusement, l'accès au dossier "uploads" est bloqué par le fichier .htaccess qu'il contient (voir ci dessous) et le site ne pouvant donc pas accèder au dossier "uploads", aucune images ne s'affichent, entre autres.

.htaccess d'origine :

Code :
# To deny PHPs
<Files ~ "\.(php|php3|php4|php5|phtml|pl|cgi)$">                                                                              
  order deny,allow                                                                                                            
  deny from all                                                                                                              
</Files>

Etant donné que le serveur utilise Apache v. 2.4, j'ai dû modifier le fichier .htacces comme ceci :

.htaccess modifié :

Code :
# To deny PHPs
<Files ~ "\.(php|php3|php4|php5|phtml|pl|cgi)$">
    Require all denied
</Files>

Malheureusement, le site s'affiche toujours sans pouvoir accéder au dossier "uploads", donc sans accès aux fichiers .js, images... etc. qu'il contient.

Si je supprime le .htaccess mon site fonctionne parfaitement.

Quelqu'un a-t-il une solution ?
Merci.
#2

Nota normalement suivant la config de Apache le module mod_access_compat est fourni à des fins de compatibilité avec les anciennes configurations. le nouveau module mod_authz_host permet les nouvelles directives de contrôle d'accès
Pour vérifier si ces modules sont inclus dans la config Apache il suffit de lancer un phpinfo et de regarder la case "Loaded Modules" suivant les version serveurs installés.

Perso en local sur debian Apache/2.4.10 (Debian config qui semble être identique à la tienne) pas de problème avec des .htaccess sur /uploads.
vérifie que tes fichiers soient bien encodés en UTF-8.

Si problèmes, je te conseille donc de modifier comme il devrait être sur la prochaine version 2.1.3 (je suppose)
- suppression des fichiers .htaccess dans les sous dossiers /doc /plugins /uploads
le htaccess est corrigé par rapport à la version 2.1.2 par ajout
Code :
RedirectMatch 403 ^.*/doc/.*\.php$
RedirectMatch 403 ^.*/plugins/.*\.php$
par défaut en 2.1.2 le htaccess (voir dans le dossier /doc de CMSms) doit contenir
Code :
RedirectMatch 403 ^.*/lib/.*\.php$
RedirectMatch 403 ^.*/tmp/.*\.php$
RedirectMatch 403 ^.*/modules/.*\.php$
RedirectMatch 403 ^.*/uploads/.*\.php$

J-C Etiemble v 2.2.xx
#3

Merci.

Solution trouvée en attendant la 2.1.3...

Il faut écrire dans le .htaccess :

Code :
# To deny PHPs
<FilesMatch "\.(php|php3|php4|php5|phtml|pl|cgi)$">
    Require all denied
</FilesMatch>

Donc <FilesMatch> au lieu de <Files>

C'est le support de mon hébergeur qui m'a indiqué cela.


Wink Bonne journée à tous et merci.
#4

Une fois les modifications effectuées (voir post précédent), j'ai tenté d'avoir des URL propres (prettyURL).


Voici les 5 étapes que j'ai effectuées :

1) - Suppression des .htaccess dans les sous dossiers /doc, /plugins et /uploads, comme expliqué par JCE.

2) - Modification du config.php (mod_rewrite) :

Code :
[== PHP ==]

<?php
$config['dbms'] = 'mysql';
$config['db_hostname'] = '**********';
$config['db_username'] = '**********';
$config['db_password'] = '**********';
$config['db_name'] = '***********';
$config['db_prefix'] = 'cms_';
$config['timezone'] = 'Europe/Paris';
$config['url_rewriting'] = 'mod_rewrite';
$config['page_extension'] = '';
$config['query_var'] = 'page';
?>

3) - Copie du htaccess.txt (depuis /doc) à la racine du site, puis modification du fichier avec ajout des lignes suivantes, comme il devrait être sur la prochaine version 2.1.3 suivant JCE :

Code :
RedirectMatch 403 ^.*/lib/.*\.php$
RedirectMatch 403 ^.*/tmp/.*\.php$
RedirectMatch 403 ^.*/modules/.*\.php$
RedirectMatch 403 ^.*/uploads/.*\.php$

****** lignes à ajouter à la suite *********

RedirectMatch 403 ^.*/doc/.*\.php$
RedirectMatch 403 ^.*/plugins/.*\.php$

4) - Modification (normes Apache 2.4) des lignes suivantes :

Code :
<Files ~ "\.htaccess">
  Order allow,deny
  Deny from all
</Files>
<Files ~ "\.ini$">
  Order allow,deny
  Deny from all
</Files>
<Files ~ "\.log$">
  Order allow,deny
  Deny from all
</Files>
<Files ~ "config\.php">
  Order allow,deny
  Deny from all
</Files>
<Files ~ "/lib/*php">
  Order allow,deny
  Deny from all
</Files>

par :

Code :
<Files ~ "\.htaccess">
  Require all granted
</Files>
<Files ~ "\.ini$">
  Require all granted
</Files>
<Files ~ "\.log$">
  Require all granted
</Files>
<Files ~ "config\.php">
  Require all granted
</Files>
<Files ~ "/lib/*php">
  Require all granted
</Files>

5) - Par FTP (Fillezilla) transformation du htaccess.txt en .htaccess.

Et là... c'est le drame !!

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.


En effectuant une recherche ligne par ligne dans mon fichier .htaccess, j'ai trouvé que le problème venait de la mise en cache des images, scripts, css... J'ai donc commenté les lignes suivantes :
  • - ExpiresActive On
  • - ExpiresDefault "access plus 1 months"
  • - toutes lignes avec : ExpiresByType

et tout fonctionne parfaitement :

Code :
#
# The following allows the browser to cache images, scripts, stylesheets and videos.  If the expires module is enabled on the server.
#
<IfModule mod_expires.c>
  #ExpiresActive On
  #ExpiresDefault "access plus 1 months"
# Set expires tags on various file types... so that the browser wont attempt to reload them.
#ExpiresByType image/jpg "access plus 1 years"
#ExpiresByType image/gif "access plus 1 years"
#ExpiresByType image/ico "access plus 1 years"
#ExpiresByType image/png "access plus 1 years"
#ExpiresByType video/x-flv "access plus 1 years"
#ExpiresByType application/pdf "access plus 1 years"
#ExpiresByType application/x-shockwave-flash "access plus 1 years"
#ExpiresByType application/javascript "access plus 1 months"
#ExpiresByType application/x-javascript "access plus 1 months"
#ExpiresByType text/javascript "access plus 1 months"
#ExpiresByType text/css "access plus 1 months"
  <IfModule mod_headers.c>
    # Setting cache control to public allows proxy servers to cache the items too.
    Header set Cache-Control "public"
  </IfModule>
</IfModule>


Voici le .htacces à utiliser donc si vous avez Apache 2.4 et que vous souhaitez utiliser les URL propres (prettyURL) :

Code :
# This file is specific to Apache configurations.
# It attempts to optimize traffic and configuration for your CMS Made Simple website.
# Many options are disabled by default as some providers do not allow you to override some of these settings in the .htaccess file.

# Attempt to override some PHP settings.
# These settings may be helpful on some hosts if your default configuration does not meet CMSMS's minimum requirements,
# and your host has given your account appropriate permissions.
#php_value upload_max_filesize "10M"
#php_value session_save_path "tmp/cache"
#php_value session.cookie_httponly true
#php_flag magic_quotes_gpc Off
#php_flag register_globals Off
#php_flag session.use_trans_sid Off

# Disallow directory indexes. This can be an important security enhancement
#Options -Indexes

# Don't allow the browser to know the type of signature.
ServerSignature Off

# Allow the Apache server to follow symbolic links.  This is usually not necessary.
#Options +FollowSymLinks

# To prevent E_STRICT problems with PHP 5.3+ you can uncomment the following lines
# Note: These settings should only be enabled for production sites!
#php_flag display_startup_errors 0
#php_flag display_errors 0
#php_flag html_errors 0
#php_value docref_root 0
#php_value docref_ext 0

# The following is to enable pretty URLS, only applicable if url_rewriting is set to 'mod_rewrite' in the config.php
<IfModule rewrite_module>
  RewriteEngine on
  RewriteBase /
  # Rewrites urls in the form of /parent/child/grandchild but only rewrites if the requested URL is not a file or directory.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.+)$ index.php?page=$1 [QSA]
</IfModule>

# The following are higly reommended security settings for files in your CMSMS install that should not be browsed directly
<Files ~ "\.htaccess">
  Require all granted
</Files>
<Files ~ "\.ini$">
  Require all granted
</Files>
<Files ~ "\.log$">
  Require all granted
</Files>
<Files ~ "config\.php">
  Require all granted
</Files>
<Files ~ "/lib/*php">
  Require all granted
</Files>

RedirectMatch 403 ^.*/lib/.*\.php$
RedirectMatch 403 ^.*/tmp/.*\.php$
RedirectMatch 403 ^.*/modules/.*\.php$
RedirectMatch 403 ^.*/uploads/.*\.php$
RedirectMatch 403 ^.*/doc/.*\.php$
RedirectMatch 403 ^.*/plugins/.*\.php$

# The following are performance optimizations and security enhancements for content that is served by your CMSMS installation.
<IfModule mod_headers.c>
  # Disable Last-Modified for performance
  Header unset Last-Modified
  # Disable ETags
  Header unset ETag
  FileEtag None
  # For Security
  Header set X-Frame-Options "SAMEORIGIN"
</IfModule>

# The following setups compression for content, if compression is enabled on the server.
<IfModule deflate_module>
  AddOutputFilterByType DEFLATE text/html text/css text/plain text/html text/xml image/gif image/jpeg image/png image/ico text/javascript application/x-javascript application/javascript application/json application/pdf
</IfModule>

#
# The following allows the browser to cache images, scripts, stylesheets and videos.  If the expires module is enabled on the server.
#
<IfModule mod_expires.c>
  #ExpiresActive On
  #ExpiresDefault "access plus 1 months"
# Set expires tags on various file types... so that the browser wont attempt to reload them.
#ExpiresByType image/jpg "access plus 1 years"
#ExpiresByType image/gif "access plus 1 years"
#ExpiresByType image/ico "access plus 1 years"
#ExpiresByType image/png "access plus 1 years"
#ExpiresByType video/x-flv "access plus 1 years"
#ExpiresByType application/pdf "access plus 1 years"
#ExpiresByType application/x-shockwave-flash "access plus 1 years"
#ExpiresByType application/javascript "access plus 1 months"
#ExpiresByType application/x-javascript "access plus 1 months"
#ExpiresByType text/javascript "access plus 1 months"
#ExpiresByType text/css "access plus 1 months"
  <IfModule mod_headers.c>
    # Setting cache control to public allows proxy servers to cache the items too.
    Header set Cache-Control "public"
  </IfModule>
</IfModule>

Si quelqu'un à une solution concernant la gestion du cache via le .htaccess sur un serveur avec Apache 2.4, merci de m'en faire part.

Wink Bonne journée à tous.
#5

Citation :En effectuant une recherche ligne par ligne dans mon fichier .htaccess, j'ai trouvé que le problème venait de la mise en cache des images, scripts, css
Oui et alors .. pour utiliser un fichier .htaccess il faut vérifier que les modules Apache soient bien activés !
- dans ton cas le module mod_expires est-il bien actif ?

J-C Etiemble v 2.2.xx
#6

phpinfo.php à la racine du site donne :

Loaded Modules
core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_expires mod_filter mod_headers mod_mime prefork mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status

Donc mod_expires est bien actif Big Grin !
#7

>Donc mod_expires est bien actif
Super donc ça devrait fonctionner
peut être une erreur dans le .htaccess
https://httpd.apache.org/docs/trunk/mod/...ires.html+

NOTA
le module "mod_access_compat" est bien activé sur ton serveur donc normalement l'ancienne version du .htacces en 2.2 doit fonctionner

J-C Etiemble v 2.2.xx
#8

Ça coince dès que je dé-commente ExpiresActive On ou ExpiresDefault "access plus 1 months" dans le .htaccess.

J'ai bien lu ton lien vers le site d'Apache, mais malgré plusieurs essais (day ou days, month ou months...), je n'ai rien trouvé afin de corriger mon problème. Les instructions sont basiques et répétitives.

L'aide d'Apache dit clairement ceci :

ExpiresDefault "base[plus num type] [num type] ..."
ExpiresByType type/encoding "base[plus num type] [num type] ..."


où base peut être :

access
now (équivalent à 'access')
modification


Le mot-clé plus est optionnel. num doit correspondre à une valeur entière [compatible avec atoi()], et type peut être choisi parmi :

years
months
weeks
days
hours
minutes
seconds


Mes instructions semblent correctes, ou alors je dois changer de lunettes !


Code :
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 months"
# Set expires tags on various file types... so that the browser wont attempt to reload them.
ExpiresByType image/jpg "access plus 1 years"
ExpiresByType image/gif "access plus 1 years"
ExpiresByType image/ico "access plus 1 years"
ExpiresByType image/png "access plus 1 years"
ExpiresByType video/x-flv "access plus 1 years"
ExpiresByType application/pdf "access plus 1 years"
ExpiresByType application/x-shockwave-flash "access plus 1 years"
ExpiresByType application/javascript "access plus 1 months"
ExpiresByType application/x-javascript "access plus 1 months"
ExpiresByType text/javascript "access plus 1 months"
ExpiresByType text/css "access plus 1 months"
  <IfModule mod_headers.c>
    # Setting cache control to public allows proxy servers to cache the items too.
    Header set Cache-Control "public"
  </IfModule>
</IfModule>


Le fait que le .htaccess ne gère plus le cache puisque j'ai commenté les lignes du mod_expire.c, le fait de cocher dans les paramètres globaux de CMSMS les options : "Autoriser le navigateur à garder en cache les pages", de fixer un temps "Limite d'expiration du cache du navigateur (en minutes)" et à la rubrique "Paramètres du cache serveur" fixer "Effacer automatiquement les fichiers mis en cache qui sont plus anciens que le nombre de jour défini", est-ce que ça supplante les fonctions du .htaccess ?

Si oui, quel est l’intérêt de la gestion du cache dans le .htaccess ?
#9

je ne sais pas réponse à ta question mais je en vois pas l’intérêt de jouer avec les "Expires" pour un gain ... théorique en fonction du serveur.

J-C Etiemble v 2.2.xx
#10

http://stackoverflow.com/questions/65506...iresactive
Sujet fermé


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)