web-dev-qa-db-fra.com

Répertoire .htaccess au sous-domaine

J'ai essayé de créer un sous-domaine à partir d'un répertoire (créé par . Htaccess) comme page principale commençant comme http://domain.com/sub/2/3/4.html et se transformant en http://sub.domain.com/2/3/4.html.

Le système de dossier va comme:

www\sub\2\3\

dans www, il y a index.html et dans le sous-dossier, il y a un autre index.html.

J'ai actuellement ce code que j'ai trouvé sur un autre site:

Options -Indexes +FollowSymLinks

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_Host} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RedirectMatch 301 ^/sub/(.*)$ http://sub.domain.com/$1

La modification du chemin de domaine par http://sub.domain.com/ a réussi, mais la modification de la page affichée à partir de l'index dans le répertoire www n'a pas abouti à l'index du sous-répertoire.

Il ne permet pas non plus d’ouvrir d’autres pages, c’est-à-dire de ne pas autoriser sub.domain.com/2/3/4.html. Si quelqu'un peut donner un conseil, il serait très apprécié.

4
reblerebel

J'ai trouvé du code fantastique pour le .htaccess qui convertit n'importe quel dossier du répertoire www principal en sous-domaines, par exemple. www/somefolder se transforme en somefolder.domain.com, vous pouvez également le configurer de sorte que tout répertoire situé dans un répertoire donné devienne un sous-domaine, par exemple. www/folder/somefolder se transforme en somefolder.domain.com

le code ci-dessous est défini pour rediriger le répertoire à l'intérieur d'un répertoire spécifique

Options +FollowSymLinks -Multiviews
RewriteEngine on
RewriteBase /
#
# Canonicalize the hostname
RewriteCond www.%{HTTP_Host} ^(www)\.(example\.com) [OR]
RewriteCond %{HTTP_Host} ^www\.([^.]+)\.(example\.com) [OR]
RewriteCond %{HTTP_Host} ^([^.]+)\.www\.(example\.com) [OR]
RewriteCond %{HTTP_Host} ^([^.]+)\.(example\.com). [OR]
RewriteCond %{HTTP_Host} ^([^.]+)\.(example\.com):[0-9]+
RewriteRule (.*) http://%1.%2/$1 [R=301,L]
#
# If subdomain is NOT www
RewriteCond %{HTTP_Host} !^www\.example\.com [NC]
# Extract (required) subdomain to %1
RewriteCond %{HTTP_Host} ^([^.]+)\.example\.com$
# Rewrite if requested URL resolves to existing file or subdirectory in /subdomains/<subdomain>/ path
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -d
RewriteRule (.*) /subdomains/%1/$1 [L]

changez simplement 'example.com' dans votre domaine, par exemple. "domain.com" veille à ne supprimer aucun des symboles autres que les points. actuellement, le répertoire situé dans le dossier appelé "sous-domaines" se transforme en sous-domaine, par exemple. www/subdomains/blog se transformera en "blog.domain.com" pour le configurer afin de modifier simplement les dossiers du répertoire www en sous-domaines, par exemple. www/blog deviendra 'blog.domain.com'

si vous souhaitez transférer automatiquement vers un sous-domaine, par exemple blog.domain.com vous devrez mettre ceci à la fin de l'autre code

RewriteCond %{HTTP_Host} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://blog.example.com/$1 [R=301,L]

espérons que cela fonctionne pour tout le monde, il m'a fallu des siècles pour trouver une solution à cet horrible problème, merci Reblerebel

1
reblerebel