Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 06/10/2012, à 11:33

TEXMAN

[Résolu]RewriteRule sans passer par .htacces

Bonjour,
J'utilise Wordpress et il fait des Rewriterule dans .htaccess et sur ma config ça marche...Mais j'ai lu dans la doc appache que si on peut il faut mieux éviter de passer par .htaccess et faire cela directement dans le fichier de conf du serveur :
doc apache

Voici ce que me met wordpress dans le .htacces:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /www_endev/wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /www_endev/wordpress/index.php [L]
</IfModule>

Voila ce que j'ai mis dans le apache2.conf

Options +FollowSymlinks
<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
#je change en All et je rajoute les rewwrite engine te inherit
		AllowOverride All
		RewriteEngine On
		RewriteOptions Inherit
		RewriteBase /www_endev/wordpress/
</Directory>
#je mets les conditions de rewrite

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /www_endev/wordpress/index.php [L]
RewriteLog /etc/apache2/rewrite.log
RewriteLogLevel 9
</IfModule>

Mais quand je supprime le .htaccess les directives du apache2.conf ne fonctionnent pas en tout cas j'ai pas de rewriting.
Quelqu'un a-t-il une idée? Merci

Dernière modification par TEXMAN (Le 06/10/2012, à 19:27)

Hors ligne

#2 Le 06/10/2012, à 14:45

bruno

Re : [Résolu]RewriteRule sans passer par .htacces

Relis la doc wink
«  Il est toujours préférable de définir les directives que vous pouvez inclure dans un fichier .htaccess dans une section Directory, car elles produiront le même effet avec de meilleures performances. »

Il faut mettre tes règles de réécriture dans la section <directory> et tant qu'à faire si tu n'utilises plus les htaccess mettre AllowOverride sur none

Il serait encore plus propre de ne pas toucher au fichier apache2.conf (susceptible d'être écrasé par une mise à niveau) et de définir tout cela dans un VirtualHost.

En ligne

#3 Le 06/10/2012, à 17:33

TEXMAN

Re : [Résolu]RewriteRule sans passer par .htacces

Ok j'ai fait plus simple j'ai mis ça dans un virtualhost sous apache2/sites-available/default

<VirtualHost *:80>
	ServerAdmin webmaster@localhost

	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		RewriteEngine On
		RewriteOptions Inherit
		Order Deny,Allow
		Deny from all
		Allow from 127.0.0.1 ::1/128		# local
		Allow from 192.168.1.0/24	# reseau
		# je mets un rewrite simple
		RewriteRule ^/a\.html$ /b.html [PT]
	</Directory>

j'ai mis deux fichiers html a.html et b.html sous var/www/ mais il se passe rien???
quand je tape http://192.168.x.x/a.html je vais sur la page a.html au lieu de la page b.html ...idem lorsque je charge les pages avec des liens internes du genre <a href="a.html">..</a>

Hors ligne

#4 Le 06/10/2012, à 18:33

bruno

Re : [Résolu]RewriteRule sans passer par .htacces

Avec ceci cela devrait marcher :

RewriteEngine On
RewriteBase /
RewriteRule ^a.html$ /b.html [P,T]

En ligne

#5 Le 06/10/2012, à 19:19

TEXMAN

Re : [Résolu]RewriteRule sans passer par .htacces

RewriteRule ^a.html$ /b.html [P,T]

avec cela j'ai une erreur 403
you don't have permission to access /a.html on this server
j'ai essayé avec

RewriteRule ^/a.html$ /b.html [P,T]

et là pas de redirection de a.html bers b.html

OUF à force de tatonnement j'ai réussi:

RewriteBase /var/www/
		RewriteRule ^a.html$ /b.html [R]

Me si j'ai pas tout compris ...mais à partir d'un truc qui marche...ya de l'espoir

Hors ligne

#6 Le 06/10/2012, à 20:45

bruno

Re : [Résolu]RewriteRule sans passer par .htacces

La réécriture est assez tordue dans le contexte d'un dossier : (https://httpd.apache.org/docs/current/f … write.html)

« Le prefixe supprimé se termine toujours par un slash, ce qui signifie que la comparaison s'effectue avec une chaîne qui ne comporte jamais de slash de début. Ainsi, un modèle contenant ^/ ne correspondra jamais dans un contexte de répertoire. »

En ligne

#7 Le 07/10/2012, à 11:45

TEXMAN

Re : [Résolu]RewriteRule sans passer par .htacces

OUI effectivement j'étais en train de relire et relire
apache2 les RewriteRule

J'avais a tord zappé :

Qu'est-ce qui est comparé ?

et aussi le §

Réécritures dans un contexte de répertoire

Bien vu Merci

Hors ligne

Haut de page ↑