2012-04-26 4 views
1

S'il vous plaît, prenez-le doucement sur moi car c'est un monde complètement nouveau de ma part.De jolies URL avec php et .htaccess

J'ai donc construit et LittleCMS et en utilisant GET pour contrôler le permalien pageID ou d'une page dans le url.I que le script fonctionne bien quand seulement passer 1 variables à travers la chaîne de requête

Par exemple, mon htaccess:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?p=$1 
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?p=$1 

Je peux ensuite appeler mes pages par id ou permalink contrôlé dans mon fichier d'index. Une chose que je n'arrive pas à comprendre est comment inclure un permalien parent dans l'url aussi bien quand une page enfant est appelée.

Un autre exemple. Si j'appelle une page qui est un enfant d'un parent:

http://site.com/index.php?p=post-title 

si post-titre est un enfant de propriété mère; Comment puis-je utiliser l'URL

http://site.com/parent-title/post-title? 
+0

Parlez-vous de quelque chose comme si quelqu'un demandait 'http: // site.com/parent-title/post-title', la requête obtient réécrit sur votre contrôleur index.php comme '/index.php? p = post-title & parent = parent-title'? –

+0

J'ai pensé à cela mais je me demandais s'il y avait un moyen d'inclure automatiquement le titre parent en appelant seulement le post-titre Je suis sûr qu'il y a un moyen mais mod_rewrites sont tout sauf anglais pour moi. Mais pour répondre à votre question. Oui, je l'étais à ce que vous avez suggéré, mais gardez toujours les urls propres –

+0

Donc, vous voulez dire comme: '/index.php? P = parent-title/post-title'? –

Répondre

0

D'abord, nous pouvons placer tout notre code dans les fichiers Apache .htaccess. Cela pourrait ressembler à ceci:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^users/(\d+)*$ ./profile.php?id=$1 
RewriteRule ^threads/(\d+)*$ ./thread.php?id=$1 
RewriteRule ^search/(.*)$ ./search.php?query=$1 

Commençons par le haut et notre chemin vers le bas pour mieux comprendre ce qui se passe ici. La première ligne définit l'environnement pour suivre les liens symboliques à l'aide de la directive Options. Cela peut être nécessaire ou non, mais certains hébergeurs utilisent des liens symboliques (similaire à alias dans MacOSX ou des raccourcis Windows) pour les erreurs de requête HTTP courantes. Ce sont généralement des fichiers symétriques, ou du moins c'est ce que je comprends. Ensuite, nous disons à Apache que nous allons utiliser le moteur de réécriture. Les deux lignes suivantes sont très, très importantes, il restreint la réécriture des URL uniquement aux chemins qui n'existent pas réellement. Cela empêche les règles ci-dessous de correspondre example.com/images/logo.png par exemple. Le premier empêche les répertoires existants avec l'indicateur! -d et le second avec! -f signifie ignorer les fichiers existants. Les trois lignes suivantes sont les commandes de réécriture d'URL réelles. Chaque ligne crée une règle qui tente de faire correspondre un modèle d'expressions régulières avec l'URL entrante