2010-10-21 4 views
0

J'essaie de supprimer des chaînes de requête de mon calendrier, mais mon mod_rewrite n'ajoute pas la chaîne de requête.Mod_rewrite help

Le site est http://cacrochester.com/Calendar et si vous cliquez sur le lien pour accéder à un autre mois, la chaîne de requête est généralement http://cacrochester.com/Calendar?currentmonth=2010-11

Avec ma règle ci-dessous, il ne vient append pas la chaîne de requête pour lorsque vous cliquez sur le lien du mois suivant, il reste juste le mois d'octobre. Quel est le problème avec ma règle?

Voici ma règle

RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^.*$ http://cacrochester.com/Calendar? [NC,R=301,L] 

EDIT:

Ce que je veux est de prendre une url comme http://cacrochester.com/Calendar?currentmonth=2010-11 et la transformer en quelque chose comme http://cacrochester.com/Calendar/2010-11

+0

Vous dites dans la première phrase que vous voulez supprimer les chaînes de requête, mais votre question est de savoir comment les conserver. Lequel est-ce? –

+0

Juste pour clarifier, vous essayez d'utiliser 'GET' sans la chaîne de requête affichée dans la barre d'adresse? – drudge

+0

Désolé. Je veux que la chaîne de requête soit comme http://cacrochester.com/Calenar/2010-11 – Catfish

Répondre

2

Vous devez probablement votre application à la sortie urls par rapport comme "/ Calendrier/2010-11". C'est un simple changement de code.

Puis dans Apache vous voudriez réécrire les urls, en utilisant:

RewriteRule ^/Calendar/([0-9]+-[0-9]{2})$ /Calendar.php?currentmonth=$1 [NC,QSA,L]

(. Vous ne voulez pas RewriteCond cette règle)

Obliger une redirection avec R = 301 exposera uniquement le schéma d'URL interne. Je ne pense pas que ce soit ce que tu veux.

+0

Que voulez-vous dire «C'est un simple changement de code»? Comme une modification de mon code PHP? – Catfish

+0

Oui, d'où "votre application". Les serveurs Web ne sont pas destinés à réécrire l'URL de la sortie de votre script PHP. Ce serait une énorme perte de performance. Si vous voulez que les utilisateurs finaux voient des URL comme/Calendar/2010-11, c'est à votre application php (ou à un autre langage dynamique) de sortir ces URLs. Habituellement, cela se fait en définissant une ou plusieurs variables de configuration (au sein de votre application) pour contrôler la façon dont ces URL sont construites. – runningdogx

2

Pour maintenir les chaînes de requête lors de la réécriture, l'utilisation l'indicateur QSA (chaîne de requête append).

[NC,R=301,QSA,L]

+0

Cela n'a pas fonctionné. – Catfish