{"id":289,"date":"2010-06-04T15:15:29","date_gmt":"2010-06-04T13:15:29","guid":{"rendered":"http:\/\/grummfy.be\/blog\/?p=289"},"modified":"2010-06-04T15:08:07","modified_gmt":"2010-06-04T13:08:07","slug":"reecriture-durl-et-erreur-interne-a-apache","status":"publish","type":"post","link":"https:\/\/grummfy.be\/blog\/289","title":{"rendered":"R\u00e9\u00e9criture d&rsquo;url et erreur interne \u00e0 Apache"},"content":{"rendered":"<p>Il arrive que lors de l&rsquo;\u00e9criture d&rsquo;un nombre complexe de r\u00e8gle de r\u00e9\u00e9criture d&rsquo;URL (URL rewriting), des erreurs se produisent sans pour autant \u00eatre compr\u00e9hensibles. Je vous propose donc de regarder comment d\u00e9boguer cela \u00e0 travers un exemple pratique.<\/p>\n<h2>Exemple<\/h2>\n<p>Prenons une r\u00e8gles qui v\u00e9rifierait que seul certains type de caract\u00e8re sont autoris\u00e9s.<br \/>\nLa r\u00e9\u00e9criture quant \u00e0 elle se fait sur toute URL.<br \/>\nAjoutons un document 403 personnalis\u00e9<br \/>\n<code>RewriteEngine on<br \/>\n#<br \/>\nRewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/ [NC]<br \/>\nRewriteRule .* - [F,NS,L]<br \/>\n#<br \/>\n#if not a dir or a file<br \/>\nRewriteCond %{REQUEST_FILENAME} !-f<br \/>\nRewriteCond %{REQUEST_FILENAME} !-d<br \/>\n#<br \/>\nRewriteRule ^(.*)$ index.php?p=$1 [QSA,L]<br \/>\nErrorDocument 403 \/erreur\/403<br \/>\n<\/code><br \/>\nTestons l&rsquo;URL http:\/\/localhost\/test:s et on obtient un beau :<\/p>\n<blockquote><p>Forbidden<\/p>\n<p>You don&rsquo;t have permission to access \/test:s on this server.<\/p>\n<p>Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.<\/p><\/blockquote>\n<p>Les logs d&rsquo;erreurs d&rsquo;Apache vous diront certainement quelque chose du genre :<\/p>\n<blockquote><p>[error] [client 127.0.0.1] Request exceeded the limit of 10 internal  redirects due to probable configuration error. Use  &lsquo;LimitInternalRecursion&rsquo; to increase the limit if necessary. Use  &lsquo;LogLevel debug&rsquo; to get a backtrace.<\/p><\/blockquote>\n<h2>Passage en mode debug de Apache<\/h2>\n<p>Modifions la r\u00e8gle de log du site courant (soit dans \/etc\/apache2\/sites-available\/default soit dans \/etc\/apache2\/apache.conf ou l&rsquo;\u00e9quivalent suivant votre configuration ou OS) et modifions la directive <em>\u00ab\u00a0LogLevel warn\u00a0\u00bb<\/em> en <em>\u00ab\u00a0LogLevel debug\u00a0\u00bb<\/em>. Ceci ne change rien dans notre cas, mais parfois cela s&rsquo;av\u00e8re utile&#8230;<\/p>\n<p>Ajoutons ensuite les log<sup class='footnote'><a href='#fn-289-1' id='fnref-289-1' onclick='return fdfootnote_show(289)'>1<\/a><\/sup> de r\u00e9\u00e9criture d&rsquo;url (moi je l&rsquo;ai ajouter dans \/etc\/apache2\/mods-available\/rewrite.conf puis j&rsquo;ai fait un a2enmod rewrite (car le fichier .conf n&rsquo;existait pas) et enfin j&rsquo;ai relancer Apache) :<br \/>\n<code>&lt;IfModule mod_rewrite.c&gt;<br \/>\nRewriteLog \"\/var\/log\/apache2\/rewrite.log\"<br \/>\nRewriteLogLevel 9<br \/>\n&lt;\/IfModule&gt;<\/code><\/p>\n<p>Maintenant si vous aller voir dans error.log vous aurez :<\/p>\n<blockquote><p>[error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use &lsquo;LimitInternalRecursion&rsquo; to increase the limit if necessary. Use &lsquo;LogLevel debug&rsquo; to get a backtrace.<br \/>\n[debug] core.c(3063): [client 127.0.0.1] r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/erreur\/403<br \/>\n[debug] core.c(3069): [client 127.0.0.1] redirected from r-&gt;uri = \/&#8230;\/test:s<\/p><\/blockquote>\n<p>Donc on voit que la redirection s&rsquo;effectue correctement mais qu&rsquo;il \u00ab\u00a0<em>n&rsquo;accroche<\/em>\u00a0\u00bb pas. Regardons donc les logs de la r\u00e9\u00e9criture d&rsquo;URL (rewrite.log) :<\/p>\n<blockquote><p>\/initial] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/test:s -&gt; test:s<br \/>\n\/initial] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;test:s&rsquo;<br \/>\n\/initial] (4) [perdir \/&#8230;\/] RewriteCond: input=\u00a0\u00bb pattern=&rsquo;200&prime; =&gt; not-matched<br \/>\n\/initial] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/test:s -&gt; test:s<br \/>\n\/initial] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;test:s&rsquo;<br \/>\n\/initial] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/test:s<br \/>\n\/initial\/redir#1] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#1] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#1] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#1] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#1] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#1] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#1] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#1] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#1] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#2] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#2] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#2] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#2] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#2] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#2] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#2] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#2] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#2] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#3] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#3] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#3] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#3] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#3] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#3] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#3] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#3] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#3] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#4] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#4] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#4] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#4] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#4] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#4] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#4] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#4] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#4] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#5] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#5] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#5] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#5] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#5] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#5] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#5] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#5] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#5] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#6] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#6] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#6] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#6] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#6] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#6] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#6] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#6] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#6] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#7] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#7] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#7] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#7] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#7] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#7] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#7] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#7] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#7] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#8] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#8] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#8] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#8] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#8] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#8] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#8] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#8] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#8] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#9] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#9] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#9] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#9] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#9] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#9] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#9] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#9] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#9] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<br \/>\n\/initial\/redir#10] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#10] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#10] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#10] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;403&prime; pattern=&rsquo;200&rsquo; =&gt; not-matched<br \/>\n\/initial\/redir#10] (3) [perdir \/&#8230;\/] add path info postfix: \/&#8230;\/erreur -&gt; \/&#8230;\/erreur\/403<br \/>\n\/initial\/redir#10] (3) [perdir \/&#8230;\/] strip per-dir prefix: \/&#8230;\/erreur\/403 -&gt; erreur\/403<br \/>\n\/initial\/redir#10] (3) [perdir \/&#8230;\/] applying pattern &lsquo;.*&rsquo; to uri &lsquo;erreur\/403&prime;<br \/>\n\/initial\/redir#10] (4) [perdir \/&#8230;\/] RewriteCond: input=&rsquo;GET \/&#8230;\/test:s HTTP\/1.1&prime; pattern=&rsquo;!^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/&rsquo; [NC] =&gt; matched<br \/>\n\/initial\/redir#10] (2) [perdir \/&#8230;\/] forcing responsecode 403 for \/&#8230;\/erreur<\/p><\/blockquote>\n<p>En gros, nous avions une boucle de redirection. Pour l&rsquo;\u00e9viter ajoutons,d ans le .htaccess, une condition qui dira de ne pas rentrer dans le bloc, s&rsquo;il y a une erreur 403 :<br \/>\n<code>RewriteEngine on<br \/>\n#<br \/>\nRewriteCond %{ENV:REDIRECT_STATUS} !403<br \/>\nRewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\\ [a-zA-Z0-9\\.\\+_\/\\-\\?\\=\\&amp;]+\\ HTTP\/ [NC]<br \/>\nRewriteRule .* - [F,NS,L]<br \/>\n#<br \/>\n#if not a dir or a file<br \/>\nRewriteCond %{REQUEST_FILENAME} !-f<br \/>\nRewriteCond %{REQUEST_FILENAME} !-d<br \/>\n#<br \/>\nRewriteRule ^(.*)$ index.php?p=$1 [QSA,L]<br \/>\nErrorDocument 403 \/erreur\/403<br \/>\n<\/code><br \/>\nMaintenant tout fonctionne comme pr\u00e9vu!<\/p>\n<h2>La fin<\/h2>\n<p>Pour finir, ceci montre encore l&rsquo;importance des logs lors de la rencontre de probl\u00e8me. S&rsquo;il y a moyen penser a les activer, cela simplifie franchement la t\u00e2che de d\u00e9bogage que cela soit pour Apache mais aussi pour tout projet informatique.<\/p>\n<p>Un dernier conseil, pensez a d\u00e9sactiver le mode debug de Apache une fois fini!<\/p>\n<p>S&rsquo;il y avait un site a conseiller sur ce sujet (en dehors du manuel Apache) je vous renverrait vers <a href=\"http:\/\/www.askapache.com\/htaccess\/mod_rewrite-tips-and-tricks.html\" target=\"_blank\">askapache<\/a><\/p>\n<div class='footnotes' id='footnotes-289'>\n<div class='footnotedivider'><\/div>\n<ol>\n<li id='fn-289-1'> Si le fichier ne se cr\u00e9er pas tout seul penser \u00e0 le cr\u00e9er <span class='footnotereverse'><a href='#fnref-289-1'>&#8617;<\/a><\/span><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Il arrive que lors de l&rsquo;\u00e9criture d&rsquo;un nombre complexe de r\u00e8gle de r\u00e9\u00e9criture d&rsquo;URL, des erreurs se produisent. Passons au d\u00e9bogage de celles-ci.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[9],"tags":[36,97,101,100,37],"class_list":["post-289","post","type-post","status-publish","format-standard","hentry","category-dev","tag-apache","tag-deboguage","tag-serveur","tag-url-rewriting","tag-web"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/comments?post=289"}],"version-history":[{"count":11,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/289\/revisions"}],"predecessor-version":[{"id":302,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/289\/revisions\/302"}],"wp:attachment":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/media?parent=289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/categories?post=289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/tags?post=289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}