Essayer d'obtenir
www.example.com
aller directement à
www.example.com/store
J'ai essayé plusieurs bits de code et aucun ne fonctionne.
Ce que j'ai essayé:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
Qu'est-ce que je fais mal?
.htaccess
mod-rewrite
redirect
Willi Mentzel
la source
la source
J'ai été surpris que personne n'ait mentionné cela:
Fondamentalement, il redirige la racine et uniquement l'URL racine. La réponse provient de ce lien
la source
RedirectMatch 301 ^/$ /store/
Essaye ça:
Si vous souhaitez une redirection externe (qui fait que le navigateur visiteur affiche l'URL redirigée), définissez-y également l'
R
indicateur:la source
www.example.com
comme l'URI après la redirection? Sinon, comment serait-il changé pour le faire?RewriteCond
et la premièreRewriteRule
?/aboveSubDir
par le navigateur ou par le serveur.Voici ce que j'ai utilisé pour rediriger vers un sous-répertoire. Cela l'a fait de manière invisible et permet toujours des requêtes qui correspondent à un fichier existant ou autre.
Changez site.com et subdir avec vos valeurs.
la source
Pour définir une redirection invisible de la racine vers le sous-dossier, vous pouvez utiliser la RewriteRule suivante dans /root/.htaccess:
La règle ci-dessus redirigera en interne le navigateur depuis:
à
Et
à
tandis que le navigateur restera sur le dossier racine.
la source
Une autre alternative si vous souhaitez réécrire l'URL et masquer l'URL d'origine:
Avec cela, si vous tapez par exemple
http://www.example.com/product.php?id=4
, il ouvrira le fichier de manière transparente àhttp://www.example.com/store/product.php?id=4
mais sans montrer à l'utilisateur l'URL complète.la source
QSA
(chaîne de requête ajoutée) à[L]
([L, QSA]
) si vous souhaitez que les chaînes de requête soient transférées dans l'URL réécrite.Cela semblait la solution la plus simple:
J'obtenais des boucles de redirection avec certaines des autres solutions.
la source
Je ne comprends pas ta question ...
Si vous souhaitez rediriger chaque demande vers un sous-dossier:
Si vous souhaitez rediriger vers un sous-dossier qui a le nom de domaine
la source
([^\.]+\.[^\.]+)$
pour réserver le domaine comme nom de sous-dossier.J'ai constaté qu'afin d'éviter la redirection circulaire, il est important de limiter la portée de la redirection vers le répertoire racine. J'aurais utilisé:
la source
La plupart des solutions ci-dessus sont correctes mais il leur manque toutes la transparence de la redirection.
Dans mon cas, lorsque je visitais www.example.com, je voulais être redirigé vers le sous - répertoire / magasin mais sans mettre à jour l'URL vers www.example.com/store . (tout ce que je veux, c'est obtenir le code de page de ce répertoire). Si tel est votre cas, la solution ci-dessous fonctionne parfaitement.
source: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
la source
RewriteRule ^(.*)$ http://otherpage.com/subfolder/$1 [L]
mais elle met à jour l'URLexample
etstore
.example.com
etotherpage.com
domaines. Lorsque je visite,example.com
je veux que le contenu deotherpage.com/subfolder
soit affiché, sans mettre à jour l'URLOn peut utiliser redirection à cet effet
Ou alias pour le mappage
Edit: mod_alias n'est applicable que dans httpd.conf.
Réfrences
la source
Auparavant, j'utilise le code suivant qui fonctionne correctement pour rediriger l'URL racine de chacun de mes domaines / sous-domaines vers leurs sous-répertoires de correspondance qui sont nommés exactement comme le sous-domaine lui-même comme ci-dessous:
Cependant, lorsque je veux ajouter un autre sous-domaine ou domaine, il devra être ajouté dans le code ci-dessus. Il devrait être beaucoup plus pratique de le simplifier pour qu'il fonctionne comme un caractère générique (*) comme ci-dessous:
Ainsi, chaque fois qu'un autre sous-domaine / domaine est ajouté tant que le nom du sous-domaine a un préfixe sub (comme: sub3.domain1.com, sub1.domain3.com etc.), le code restera valide.
la source
Je pense que les principaux problèmes avec le code que vous avez publié sont:
la première ligne correspond à un hôte commençant strictement par sample.com, donc www.sample.com ne correspond pas.
la deuxième ligne veut au moins un caractère, suivie de www.sample.com qui ne correspond pas non plus (pourquoi avez-vous échappé au premier w?)
aucune des règles incluses ne redirige vers l'URL que vous avez spécifiée dans votre objectif (en plus, l'échantillon est mal orthographié comme samle, mais ce n'est pas pertinent).
Pour référence, voici le code que vous avez actuellement:
la source
Un peu sur Google, me donne ces résultats:
Ou essayez ceci:
Je n'ai pas fait beaucoup de redirection dans le fichier .htaccess, donc je ne sais pas si cela fonctionnera.
la source
Les deux solutions possibles pour y parvenir sont les suivantes: 1. Créez un
.htaccess
fichier dans le dossier racine comme sous (remplacez simplement example.com et my_dir par vos valeurs correspondantes):Utilisez RedirectMatch pour rediriger uniquement l'URL racine «/» vers un autre dossier ou URL,
RedirectMatch ^ / $ http://www.example.com/my_dir
la source
essayez d'utiliser les lignes ci-dessous dans htaccess
Remarque: vous devrez peut-être vérifier le nom du fichier default.html
default.html est le fichier qui se charge par défaut dans le dossier racine.
RewriteEngine
Redirect /default.html http://example.com/store/
la source
vous venez d'ajouter ce code dans votre fichier .htaccess
la source
Je répondrai à la question d'origine non pas en soulignant une autre syntaxe possible (il y en a beaucoup parmi les autres réponses) mais en soulignant quelque chose que j'ai déjà eu à traiter, qui m'a mis un certain temps à comprendre:
Il est possible que% {HTTP_HOST} ne soit pas correctement rempli, ou pas du tout. Bien que je n'ai vu que cela se produire dans une seule machine sur un hôte partagé, avec certains apache 2.2 patché personnalisé, c'est néanmoins une possibilité.
la source
Cela essaiera le sous-répertoire si le fichier n'existe pas à la racine. J'avais besoin de cela car j'ai déplacé un site Web .html de base qui s'attend à être exécuté au niveau racine et l'ai poussé vers un sous-répertoire. Fonctionne uniquement si tous les fichiers sont plats (pas de supercherie .htaccess dans le sous-répertoire possible). Utile pour les choses liées comme les fichiers css et js.
la source