Bonjour à tous :
J’ai un problème sur mon serveur Debian, je poste sur ce forum car je ne sais pas où poser ma question :
J’ai des sites Web qui tournent dessus, ces sites comportent tous un fichier .htaccess, dans lequel figure des redirections 301 : mais chose bizarre, malgré le fait que le fichier .htaccess est bien pris en compte (quand je fais exprès de faire une faute dans le fichier .htaccess, il y a bien une erreur 500).
J’ai autorisé l’Override dans la configuration Apache, le mode Rewrite est activé, je ne comprends vraiment pas ce qu’il se passe.
D’avance merci pour votre aide.
Voici le fichier Apache2.conf :
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.2/ for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# The configuration directives are grouped into three basic sections:
# 1. Directives that control the operation of the Apache server process as a
# whole (the 'global environment').
# 2. Directives that define the parameters of the 'main' or 'default' server,
# which responds to requests that aren't handled by a virtual host.
# These directives also provide default values for the settings
# of all virtual hosts.
# 3. Settings for virtual hosts, which allow Web requests to be sent to
# different IP addresses or hostnames and have them handled by the
# same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path. If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "foo.log"
# with ServerRoot set to "/etc/apache2" will be interpreted by the
# server as "/etc/apache2/foo.log".
#
### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at <URL:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#lockfile>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
#ServerRoot "/etc/apache2"
#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
LockFile ${APACHE_LOCK_DIR}/accept.lock
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15
##
## Server-Pool Size Regulation (MPM specific)
##
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadLimit: ThreadsPerChild can be changed to this maximum value during a
# graceful restart. ThreadLimit can only be changed by stopping
# and starting Apache.
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# event MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
#
AccessFileName .htaccess
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>
#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value. If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain
#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf
# Include all the user configurations:
Include httpd.conf
# Include ports listing
Include ports.conf
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.
# Include generic snippets of statements
Include conf.d/
# Include the virtual host configurations:
Include sites-enabled/
Salut,
Contrairement à la configuration générale de l’indien et dans le contexte actuel, il serait plus probant de nous parler des vhosts actifs/concernés et de leur contenu, vient ensuite les fichiers .htaccess en causes.
Les logs, en /var/log/apache2/* ??
Super merci pour ta réponse :
J’ai enquêté en profondeur et réalisé plusieurs tests :
En fait les redirections 301 fonctionnent bien sur d’autres sites, hébergés sur le même serveur, donc le problème ne provient pas, contrairement à ce que je pensais du serveur Debian, par contre le fichier .htaccess en question fonctionne parfaitement sur le même site hébergé sur la version PROD, par contre sur le même site en version DEV, les 301 ne fonctionnent pas. C’est ce qui m’a fait penser à un problème de serveur. Je continue à creuser, j’espère une aide sur ce forum, d’avance merci.
Voici le fichier VHOSTS
Alias /monsite/var/www/monsite
<Directory /var/www/monsite>
DirectoryIndex index.html index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Je sais pas si ça peut aider…Encore merci
Voudrais tu éclaircir ce qui suit.
Que disent les logs en direct lors de tes tentatives d’accès ???
[code]
tail -f /var/log/apache2/error.log
tail -f /var/log/apache2/access.log[/code]
As-tu du https ?
Le contenu des fichiers .htaccess ???
Désolé si je n’étais pas très clair en effet :
J’ai 2 serveurs Debian qui ont à peu près les mêmes configurations:
1 machine Debian chez OVH qui me sers de serveur de Production (les 301 sont parfaitement prises en compte dans le .htaccess)
1 machine Debian en local qui me sers de serveur de DEV (les 301 ne sont pas prises en compte dans le .htaccess), cependant je me suis rendu compte que certains autres sites quant à eux prennent bien en compte les redirections 301) :
J’espère être clair
Salut,
C’est à présent débroussaillé, sauf¹ …
[quote=“donbrico”]1 machine Debian chez OVH qui me sers de serveur de Production (les 301 sont parfaitement prises en compte dans le .htaccess)
1 machine Debian en local qui me sers de serveur de DEV (les 301 ne sont pas prises en compte dans le .htaccess),[/quote]
Je suppose, que tu as fait un copier du/des .htaccess qui fonctionne la_bas (ovh) pour le coller en local.
Les re-directions sont-elles les mêmes ???
J’entends par là : chez ovh le site_1 en [mono]/var/www/monsite_1[/mono] (pareillement pour la déclaration du vhost) en est-il de même en local ???
En local n’est-il pas en [mono]/home/user/www/monsite_1[/mono] ???
Un truc du genre quoi, les chemins absolus (adresses) qui ne seraient pas en adéquations.
Ce n’est qu’une hypothèse, mais au vu des infos que tu veux bien lâcher, hein …
Je réitère …
[quote=“BelZéButh”]Que disent les logs en direct lors de tes tentatives d’accès ???
[code]# tail -f /var/log/apache2/error.log
tail -f /var/log/apache2/access.log
[/code]
As-tu du https ?
Le contenu des fichiers .htaccess ???[/quote]
¹ …
Au fait, j’allais oublier …
[quote=“donbrico”]En fait les redirections 301 fonctionnent bien sur d’autres sites, […]
Voici le fichier VHOSTS
Alias /monsite/var/www/monsite
<Directory /var/www/monsite>
DirectoryIndex index.html index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
[/quote]
Je n’y relève aucune trace d’une quelconque re-direction 301 !
Les commandes qui suivent sont à lancés la_bas et en local.
# apache2ctl -t && apache2ctl configtest && apache2ctl -S
# less /etc/apache2/sites-enabled/* | more
ps : [mono]less /etc/apache2/sites-enabled/* | more[/mono] tu fais défiler avec la touche enter.
Faisant un copier/coller ici même, tout comme le/les fichier .htaccess incriminé.
Merci beaucoup BelZéButh,
Voici les éléments : cela ne m’étais jamais arrivé auparavant, c’est pour cette raison que je suis complètement perdu, j’ai une très grande confiance en Debian et bien-sûr Apache, donc forcément, il y a quelque chose que j’ai fait qui ne va pas, mais je ne vois pas quoi, donc voici les éléments :
J’ai bien évidemment récupéré le .htaccess de la version PROD pour la mettre sur le serveur DEV. Quand je teste les mêmes règles de réécriture du DEV vers la PROD cela fonctionne, donc c’est vraiment localisé au niveau du DEV.
Aucune erreur dans error.log, et 404 classique.
Par rapport aux redirections ce sont des redirections dans le .htaccess
<IfModule mod_rewrite.c>
############################################
## enable rewrites
Options +FollowSymLinks
RewriteEngine on
############################################
## workaround for HTTP authorization
## in CGI environment
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /monsite/
Redirect permanent /old_page.html /new_page.html
############################################
## always send 404 on missing files in these folders
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
############################################
## never rewrite for existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
############################################
## rewrite everything else to index.php
RewriteRule .* index.php [L]
</IfModule>
############################################
## Prevent character encoding issues from server overrides
## If you still have problems, use the second line instead
#AddDefaultCharset Off
AddDefaultCharset UTF-8
############################################
## Optimisation performances
##
# BEGIN Expire headers
# MOD_DEFLATE COMPRESSION
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
#Pour les navigateurs incompatibles
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
#ne pas mettre en cache si ces fichiers le sont d�j�
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
#les proxies doivent donner le bon contenu
Header append Vary User-Agent env=!dont-vary
# BEGIN Expire headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 7200 seconds"
ExpiresByType image/jpg "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
AddType image/x-icon .ico
ExpiresByType image/ico "access plus 2592000 seconds"
ExpiresByType image/icon "access plus 2592000 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType text/css "access plus 2592000 seconds"
ExpiresByType text/javascript "access plus 2592000 seconds"
ExpiresByType text/html "access plus 7200 seconds"
ExpiresByType application/xhtml+xml "access plus 7200 seconds"
ExpiresByType application/javascript A259200
ExpiresByType application/x-javascript "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
</IfModule>
# END Expire headers
# BEGIN Cache-Control Headers
<IfModule mod_headers.c>
<FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz|ttf)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=2592000, private"
</FilesMatch>
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=7200, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers
# KILL THEM ETAGS
Header unset ETag
FileETag none
# protect the htaccess file
<files .htaccess>
order allow,deny
deny from all
</files>
# protection de la lecture des repertoires
Options -Indexes
## Fin Optimisation
############################################
############################################
## By default allow all access
Order allow,deny
Allow from all
Cela a toujours fonctionné, mais là incroyable cela ne fonctionne pas.