Problème de non prise en compte de redirection 301

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. :017

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 :slightly_smiling:

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 … :mrgreen:

Je réitère … :083

[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]

¹:017

Au fait, :116 j’allais oublier … :whistle:

[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 ! :033 :naughty:


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.