{"id":321,"date":"2010-08-12T23:07:55","date_gmt":"2010-08-12T21:07:55","guid":{"rendered":"http:\/\/grummfy.be\/blog\/?p=321"},"modified":"2010-08-12T23:18:35","modified_gmt":"2010-08-12T21:18:35","slug":"reecriture-d%e2%80%99url-alias-et-plusieurs-devellopeurs-sur-apache","status":"publish","type":"post","link":"https:\/\/grummfy.be\/blog\/321","title":{"rendered":"R\u00e9\u00e9criture d\u2019URL, alias et plusieurs d\u00e9veloppeurs sur Apache"},"content":{"rendered":"<p>Lorsque l&rsquo;on travaille \u00e0 plusieurs sur un projet, c&rsquo;est toujours int\u00e9ressant. Malheureusement, cela peut aussi entrainer divers probl\u00e8mes. Je vais tenter de vous expliquer un \ufeff\ufeffobstacle qui peut vite devenir tr\u00e8s chi*nt&#8230;<\/p>\n<p>Pour pr\u00e9senter cette probl\u00e9matique, je vais prendre exemple sur ce que je d\u00e9veloppe actuellement. Le site en cours de cr\u00e9ation se base sur zend framework et n\u00e9cessite une r\u00e9\u00e9criture d&rsquo;URL. Il faut savoir qu&rsquo;Apache utilise le chemin physique<sup class='footnote'><a href='#fn-321-1' id='fnref-321-1' onclick='return fdfootnote_show(321)'>1<\/a><\/sup> comme base pour calculer le chemin vers le fichier r\u00e9\u00e9crit sauf si on lui pr\u00e9cise une directive RewriteBase diff\u00e9rente. Le probl\u00e8me survient \u00e0 cet endroit, plusieurs d\u00e9veloppeurs entrainent plusieurs machines et donc plusieurs configurations diff\u00e9rentes!<\/p>\n<p>La solution de base est que chaque personne utilisant un alias Apache d\u00e9finit un RewriteBase. Cependant, cela veut dire qu\u2019a chaque nouvelle version du fichier .htaccess il faut red\u00e9finir celui-ci.<\/p>\n<p>La r\u00e9ponse la plus simple consiste \u00e0 utiliser un RewriteCond sur l&rsquo;hostname du serveur et bien entendu \u00e0 l&rsquo;utiliser lors de l&rsquo;acc\u00e8s aux tests locaux ou non &#8230;<\/p>\n<p>Exemple de configuration :<\/p>\n<ul>\n<li> nom du serveur : grummfy<\/li>\n<li>URL appel\u00e9e : http:\/\/grummfy\/serveur\/dev\/projet\/example.com\/&#8230; (Si vous utilise http:\/\/localhost\/ la directive HTTP_HOST vaudra localhost)<\/li>\n<li>ALIAS : \/serveur\/ =&gt; \/media\/data\/serveur\/<\/li>\n<\/ul>\n<p>Le fichier .htacccess contiendra ceci :<br \/>\n<code>SetEnv APPLICATION_ENV development<br \/>\nphp_value session.auto_start 0<br \/>\nphp_flag magic_quotes_gpc off<br \/>\nRewriteEngine On<br \/>\nRewriteCond %{REQUEST_FILENAME} -s [OR]<br \/>\nRewriteCond %{REQUEST_FILENAME} -l [OR]<br \/>\nRewriteCond %{REQUEST_FILENAME} -d<br \/>\nRewriteRule ^.*$ - [NC,L]<br \/>\nRewriteCond %{HTTP_HOST} grummfy<br \/>\nRewriteRule ^.*$ \/serveur\/dev\/projet\/example.com\/index.php [NC,L]<br \/>\nRewriteRule ^.*$ index.php [NC,L]<\/code><\/p>\n<p>Le fait d&rsquo;utiliser le rewrite flag \u00ab\u00a0L\u00a0\u00bb permet de sortir de la r\u00e9\u00e9criture d&rsquo;URL. Si le hostname du serveur n&rsquo;est pas grummfy il appliquera la r\u00e8gle par d\u00e9faut, \u00e0 savoir tenter de trouver index.php dans \/media\/data\/serveur\/dev\/projet\/example.com\/ comme si on avait effectuer un appel depuis http:\/\/media\/data\/serveur\/dev\/projet\/example.com\/<\/p>\n<div class='footnotes' id='footnotes-321'>\n<div class='footnotedivider'><\/div>\n<ol>\n<li id='fn-321-1'> physical-directory-path <span class='footnotereverse'><a href='#fnref-321-1'>&#8617;<\/a><\/span><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Une solution \u00e0 la probl\u00e9matique des r\u00e9\u00e9critures d&rsquo;url sans rewriteBase tout en \u00e9tant utilisable par plusieurs d\u00e9veloppeurs<\/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,28,100,37],"class_list":["post-321","post","type-post","status-publish","format-standard","hentry","category-dev","tag-apache","tag-trucs-et-astuces","tag-url-rewriting","tag-web"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/321","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=321"}],"version-history":[{"count":10,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/321\/revisions"}],"predecessor-version":[{"id":331,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/321\/revisions\/331"}],"wp:attachment":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/media?parent=321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/categories?post=321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/tags?post=321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}