2010-10-09 7 views
1

Situation:Aide pour le fichier .htaccess. mod_rewrite pour les URL personnalisées?

J'ai quelques centaines de messages appartenant chacun à une catégorie particulière. A] Lorsque l'utilisateur visite la page d'accueil, le contenu est indépendant de la catégorie triée par date.

http://www.example.com

Il peut naviguer à travers les différentes pages comme:

Type 1: http://www.example.com/3 qui correspond à http://www.example.com/index.php?page=3

Je peux probablement le faire dans mod_rewrite

B] L'utilisateur peut alors décider de voir par catégorie comme:

Type 2: http://www.example.com/Football qui correspondra à

http://www.example.com/index.php?page=1&category=Football

Il peut alors naviguer à travers des pages comme:

Type 3: http://www.example.com/Football/5 qui => http://www.example.com/index.php?page=5&category=Football

C] J'ai un répertoire appelé View avec index. php dedans. Il concerne uniquement les postes individuels comme:

Type 4: http://www.example.com/View/1312 =>http://www.example.com/View/index.php?id=1312

Voici le mod_rewrite que je fais:

RewriteEngine sur RewriteRule^Voir /([^/.]+)/? ? $ Voir/index.php id = $ 1 [L]

maintenant, voici les problèmes que j'ai

Au point C]: http://www.example.com/View/1312 fonctionne très bien, mais http://www.example.com/1312/ (remarquez la barre oblique) se sépare & donne des résultats étranges. Q1) Alors, comment puis-je maintenir la cohérence ici?

Q2) Idéalement, je voudrais http://www.example.com/View/1514 pour montrer une erreur 404 s'il n'y a pas de poste avec l'ID 1514, mais maintenant je dois prendre soin de cela manuellement dans le code PHP.

Quelle est la bonne façon de gérer ces URL dynamiques? surtout si l'URL est fausse.

Q3) comment puis-je m'assurer que http://www.example.com & http://www.example.com/ redirige tous les deux vers http://www.example.com/index.php?page=1; (le code mod_rewrite serait utile)

Veuillez noter qu'il n'y a que deux fichiers index.php. Un dans le répertoire racine qui fait tout sauf afficher des messages individuels qui est pris en charge par un index.php dans le répertoire View. Est-ce une manière logique de développer un site web?

+0

par exemple: http://stackoverflow.com/questions/3897676/help-with-htaccess-file-mod-rewrite -for-custom-urls c'est l'URL courante de la page, mais si je change le non. dans l'url pour dire 3897777, est l'apache qui ne sera pas une page 404, ou le code côté serveur va regarder dans la base de données et rediriger vers 404 ... comment cela fonctionne? – Gaurav

Répondre

1

Essayez ces règles:

RewriteRule ^$ index.php?page=1 [L] 
RewriteRule ^([0-9]+)/?$ index.php?id=$1 [L] 
RewriteRule ^View/([0-9]+)/?$ View/index.php?id=$1 [L] 
RewriteRule ^([A-Za-z]+)/?$ index.php?category=$1&page=1 [L] 
RewriteRule ^([A-Za-z]+)/([0-9]+)/?$ index.php?category=$1&page=$2 [L] 

Quant à l'autre question: Oui, car Apache peut cartographier ces demandes vers des fichiers existants, il répond par un code d'état de réussite. Maintenant, si votre application décide que la ressource demandée n'existe pas, vous devez gérer cela dans votre application et envoyer un code d'état approprié.

+0

Merci d'essayer cela, pouvez-vous préciser à propos de l'erreur 404 et le problème de la barre oblique finale? – Gaurav

1

Pour corriger le slash, Il suffit de mettre /? avant la $ à la fin de votre modèle

+0

Ne fonctionne pas, en êtes-vous sûr? – Gaurav

+0

Si c'est votre règle: RewriteRule^Voir/([0-9] +) /? $ View/index.php? Id = $ 1 [L] Ceci est votre modèle:^Voir/([0-9] +) /? $ – JKirchartz

Questions connexes