web-dev-qa-db-fra.com

Réécriture d'URL dans les sous-domaines?

dis que j'ai un site web avec /article.php?id=1&category=Minecraft&Name=Lorem+Ipsum

et /topic.php?category=Minecraft

comment pourrais-je configurer l'URL de réécrire pour que les pages de sujet soient

minecraft.domain.com

et articles étant

minecraft.domain.com/1/Lorem+Ipsum

Je ne trouvais pas comment faire cela n'importe où sur le Web ... enfin, au moins sur google

1
Alice

1) Sur votre site Web, assurez-vous de générer PROPER URL, par exemple. http://minecraft.domain.com/1/lorem-ipsum au lieu de /article.php?id=1&category=Minecraft&Name=Lorem+Ipsum

Ici, les caractères acceptables pour le nom de l'article sont:

  • tous les caractères latins (peut être mixte, mais je recommanderais d'avoir tous les minuscules)
  • chiffres
  • caractère de soulignement _
  • minus char -

Tous les autres caractères doivent être remplacés par -. Si lors de la normalisation d'URL, vous vous retrouvez avec plus de 1 - caractère l'un à côté de l'autre - supprimez ces caractères supplémentaires. Le nom de l'article ne doit pas commencer ni se terminer par - ou _.

Exemple de processus de normalisation (étape par étape):

  • Oops! I did it again! - texte initial
  • oops--i-did-it-again- - après avoir remplacé les caractères indésirables par -
  • oops-i-did-it-again- - suppression des caractères - dupliqués
  • oops-i-did-it-again - dernière piqûre après la suppression de la fin -

2) Configurez votre sous-domaine minecraft.domain.com pour qu'il pointe dans le même dossier racine que domain.com.

3) Ajoutez ces règles dans votre .htaccess

# Activate Rewrite Engine
RewriteEngine On
# Do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]
# rewrite root (topic) hit
RewriteCond %{HTTP_Host} ^minecraft\.domain\.com$
RewriteRule ^$ /topic.php?category=Minecraft [QSA,L]
# rewrite article hits
RewriteCond %{HTTP_Host} ^minecraft\.domain\.com$
RewriteRule ^(\d+)/([a-z0-9\-_]+)$ /article.php?id=$1&category=Minecraft&Name=$2 [NC,QSA,L]

Ces règles feront ces réécritures:

minecraft.domain.com => /topic.php?category=Minecraft

minecraft.domain.com/1/lorem-ipsum => /article.php?id=1&category=Minecraft&Name=lorem-ipsum


PDATE:

Ces règles fonctionneront pour tous les sous-domaines (y compris www.domain.com) - remplacez les 6 dernières lignes de l'extrait précédent:

# rewrite root (topic) hit
RewriteCond %{HTTP_Host} ^([a-z0-9\-]+)\.domain\.com$ [NC]
RewriteRule ^$ /topic.php?category=%1 [QSA,L]
# rewrite article hits
RewriteCond %{HTTP_Host} ^([a-z0-9\-]+)\.domain\.com$ [NC]
RewriteRule ^(\d+)/([a-z0-9\-_]+)$ /article.php?id=$1&category=%1&Name=$2 [NC,QSA,L]

Il est de VOTRE responsabilité de générer des URL APPROPRIÉES. Les règles ci-dessus feront en sorte que ces belles URL fonctionnent.

2
LazyOne