7
votes

.HTACCESS: rediriger l'URL racine au sous-répertoire, mais retenir l'URL racine

Je suis en train de nettoyer la structure de mon répertoire de mon domaine (malheur à moi pour la configuration du contenu de l'URL racine dans le répertoire racine!) Et avez besoin d'une idée de la manière d'utiliser Rewriterule correctement.

Le gist

je veux domain.tld utiliser domaine.tld / subdirectory / mais apparaît toujours comme domaine.tld dans l'URL.

mon .htaccess jusqu'à présent xxx

Le redirectMatch fonctionne bien. Malheureusement, T semble que le dernier rériter devrait suffisamment, mais ce n'est pas le cas. L'ancienne configuration de contenu dans le répertoire racine apparaît toujours.

Qu'est-ce que je manque ici?

Mise à jour: Résolu

que je ne suis pas assez expérimenté avec le .htaccess / Apache pour pouvoir expliquer pourquoi.

J'avais: xxx

supprimer celui-ci : xxx

Alors maintenant ma question est: pourquoi est-ce?


0 commentaires

4 Réponses :


0
votes

la partie d'URI dans un Rewriterule ne contient pas la barre oblique précédente.

donc pour correspondre à http://example.com/ vous devez utiliser rewriterule ^ $ rédreule ^ / $ correspondrait théoriquement http://example.com// (note double barre oblique).

Supplément: ? $ à la fin n'a aucun sens, car cela ajouterait une querystring avec un paramètre vide $ . .

Enfin, vous avez: RewriteRule ^ $ / SubDirectory / [L, QSA]


0 commentaires

0
votes

Les deux règles sont valides :

Celui-ci à utiliser dans la configuration du serveur ou le contexte de l'hôte virtuel ( l'URL commence par la barre slash ): xxx

Si vous placez la même règle dans .htaccess , vous devez supprimer de la barre oblique ( parce qu'il est par rapport à Le dossier actuel ): xxx

ps Floern déjà mentionné sur ? $ IT cible URL PARL. Pas besoin de $ du tout. Si vous terminez votre URL avec ? Ceci indique à Apache de ne pas transférer la chaîne de requête sur une nouvelle URL (goutte de requête de goutte complètement).

supplémentaire, [QSA] < / CODE> Le drapeau est uniquement requis si vous manipulez avec la chaîne de requête (? dans URL cible) et que vous souhaitez toujours que votre chaîne de requête actuelle soit annexée à l'URL de la nouvelle construction. Cela signifie que dans la présente règle rédreule ^ $ / subdirectory / [l, qsa] le drapeau [qsa] ne fait rien du tout et peut être supprimé en toute sécurité.


0 commentaires

2
votes

Essayez ceci:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/subdirectory/

# REWRITES ALL URLS 
# [REPLACE "domain" WITH THE ACTUAL DOMAIN, 
# WITHOUT THE TLD (.com, .net, .biz, etc)]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.

# REWRITE ALL THOSE TO subdirectory
RewriteRule ^(.*)$ /subdirectory/$1 [L]


0 commentaires

0
votes

J'ai essayé la solution mais dans mon cas supprime le / dossier /, mais montrant l'ancien site (www.site.it) et non le www.site.it/folder/ avec "dossier" supprimé ... J'ai copié et collé le même code mais ne fonctionne pas dans mon cas :( J'ai ouvert un nouveau sujet: . HTACCESS: rediriger la racine WordPress URL sur un autre WordPress dans un sous-répertoire, mais conserver une URL racine


0 commentaires