2010-02-23 10 views
3

J'ai actuellement le code suivant pour réécrire les URL de moteur de recherche à quelque chose que PHP peut gérer, mais il y a quelques problèmes.Règle avancée de réécriture Htaccess pour PHP

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*)/(.*) index.php?$1/$2 

Cette récrit domain.com/cat/mens/size/large/-domain.com/index.php?cat/mens/size/large/.


Il serait idéal si je pouvais réécrire à quelque chose comme cela en utilisant des quantités variables de sous-répertoires comme celui qui est plus favorable au code PHP:

Idéal Rewrite: domain.com/index.php?cat=mens&size=large

Une autre exemple: domain.com/page/value/subpage/subvalue/something/true/

Si Réécrire: domain.com/index.php?page=value&subpage=subvalue&something=true


est-il un moyen de réécrire également: domain.com/search/?q=blah+blah

Pour: domain.com/index.php?search&q=blah+blah

Répondre

2

Essayez ceci:

RewriteRule /page/(.*)/subpage/(.*)/something/(.*) index.php?page=$1&subpage=$2&something=$3

Lorsque la quantité de variables dans l'URL n'est pas prédéfini, il vaut mieux il suffit de le passer comme une chaîne au php, et laissez-le gérer (exploser, implode, foreach, construire un tableau).

RewriteRule /search/?q=(.*) index.php?search&q=$1

Quant à ce que vous avez demandé ci-dessous:

RewriteRule /cat/(.*)/size/(.*)/?q=(.*)&abc=(.*) index.php?search&cat=$1&size=$2&q=$3&abc=$4

En fait, la première partie de RewriteRule est l'URL donnée, la deuxième partie est celle qui va au script. Chaque (quelque choseInHere) dans le premier d'une variable que vous pouvez utiliser dans le second comme $ 1, $ 2, $ 3 et $ 4.

+0

Ouais c'est ce que je fais actuellement, il suffit d'exploser la chaîne par la barre oblique. Donc, juste par exemple si je voulais simplement modifier la réécriture pour gérer cela: ** domain.com/cat/mens/taille/large /? Q = blah + blah & abc = 123 ** Comment je m'y prendrais? Merci! :-) – Matt

+0

Avec .htaccess ou avec php manipulant la chaîne? – PawelMysior

+0

Avec .htaccess car actuellement il ne passe pas cette partie de la chaîne dans la réécriture donc quelque chose après la dernière barre oblique que le PHP ne verra pas. – Matt

Questions connexes