Je suis en cours d'exécution Apache avec une règle de redirection comme ceci: Ceci redirige avec succès http: //1st-domain.com à http://2nd-domain.com
Cependant, lorsque la request_uri est vide, je veux rediriger vers un troisième domaine. P> mais cela ne fonctionne pas et redirige à la fois 2nddomain.com p> Mes règles sont commandées comme ceci: P> <IfModule mod_rewrite.c>
RewriteLog "/home/domain.com/logs/rewrite.log"
RewriteLogLevel 3
</IfModule>
8 Réponses :
Cela devrait fonctionner: espère qu'il aide! p> Remarque: Demande_uri est légèrement différente entre httpd.conf et .htaccess, il commence par une barre oblique inverse. httpd.conf. Cela signifie que dans httpd.conf, la première règle de réécriture doit être ^ \ / $ code>, pas seulement
^ $ code>. P> p> p>
Merci d'avoir essayé, mais la deuxième règle choisit à la fois une demande de request_uri vide et non vide. Des pensées?
Ok je l'ai travaillé, mais votre réponse était très proche. A: Apache ne renvoie jamais de demande vide_uri, une demande vide passe comme '/' alors je viens de changer la première règle de réécriture à ^ \ / $ et ça marche!
@CrunchyT: vos règles de réécriture sont dans httpd.conf, correct? J'ai testé le mien dans .htaccess. Demande_uri est légèrement différente entre httpd.conf et .htaccess, il commence par une barre oblique inverse supplémentaire dans httpd.conf. Heureux que vous ayez compris! :)
Exactement, moi aussi je devais utiliser ^ \ / $, parce que j'ai mis la règle dans httpd.conf. Cela fonctionne comme un charme, merci beaucoup!
Ne fonctionne pas pour moi, je ne pense pas que Slash Besoin de s'échapper.
La variable request_uri code> serveur TOUJOURS i> a un préfixe SLASH, quel que soit l'endroit où il est utilisé. Mais ce n'est pas la variable
request_uri code> serveur utilisé ici; C'est l'URL-PATH correspondant par le
Rewriterule code> motif i> - c'est ce chemin d'URL qui diffère entre Server i> et Annuaire < / i> (c.-à-d.
.htaccess code>) contexte.
Vos règles redirigent la demande avec vide Pour Demande_uri, vous pouvez utiliser P> Query_string CODE>.
RewriteCond %{HTTP_HOST} ^1st-domain\.com$
RewriteRule ^$ http://3rd-domain.com$1 [R=permanent,L]
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^(.*)$ http://2nd-domain.com$1 [R=permanent,L]
J'utilise ce qui suit pour attraper Demande_url vide: P>
rewriteEngine sur code> p>
réécritecond% {request_uri} "^ / $" code> p>
rewrétrule ^ (. *) http: //% {http_host} / mon / une autre / url code> p> p> p>
Comment vérifier si ce n'est pas vide?
@harrrrrrrrrry Vous pouvez préfixer la regex avec ! code> à nier i> it. par exemple.
! ^ / $ code>
sur multisites Une telle redirection fonctionne pour moi pour des demandes vides:
Si la demande est vide Apache 'redirects' à index.html donc -rewritecond% {request_uri} index- pourrait vous aider. P>
Cela devrait fonctionner:
RewriteCond %{HTTP_HOST} ^1st-domain\.com RewriteRule ^(.*)$ http://2nd-domain.com$1 [R=permanent,L] RedirectMatch ^/$ http://3rd-domain.com
J'ai essayé les options indiquées sur cette page, tout ce que je voulais, c'était de vérifier si la request_uri est vide (ou dans ce cas particulier, un / code>):
"Vérification d'une barre oblique était plus difficile"? ^ / $ code>
En plus d'être une réponse ancienne, je crois qu'il y avait une raison pour laquelle ce n'était pas une option. Ne peux pas penser à cela
Ceci a fonctionné pour moi:
RewriteCond %{HTTP_HOST} ^(www\.)?1st-domain\.com$ RewriteCond %{REQUEST_URI} ^/$ RewriteRule .* http://3rd-domain.com/ [L,R=permanent] RewriteCond %{HTTP_HOST} ^.*$ RewriteRule .* http://2nd-domain.com%{REQUEST_URI} [L,R=permanent]
Stackoverflow.com/questions/5684931
demande_uri i> n'est jamais vide.