Je travaille sur la révision de la structure d'URL des pages de revue, qui peut être filtrée par ville, comté, nombre d'étoiles et technicien. Je veux que les pages ressemblent à des pages HTML statiques et remplacent les plus avec des traits d'union. Mon objectif: -Appliquer le nouveau style URL sans modifier la page de commentaires, juste le fichier htaccess -mettre en 301 réoriente des anciennes URL de style à de nouvelles URL de style points positifs -convert à traits d'unionBoucle infinie possible dans mod_rewrite?
Actuellement les URL d'examen ressembler à ceci:
domain.com/reviews/?city=City+Name
domain.com/reviews/?city=City+Name & page = 2
domain.com/reviews/?county=County+Name
domain.com/reviews/?county=County+Name & page = 2
domain.com/reviews/?stars=4
domain.com/reviews/?stars=4 & page = 2
domain.com/reviews/?tech=Tech+Name
domain.com/reviews/?tech=Tech+Name & page = 2
Mon but est de les faire ressembler à ceci (et 301 les anciennes URL de style pour les nouvelles URL de style):
domain.com/reviews/city/City-Name.html
domain.com/reviews/city/City-Name/page/2.html
domain.com/reviews/county/County-Name.html
domain.com/reviews/county/County-Name /page/2.html
domain.com/reviews/stars/4.html
domain.com/reviews/stars/4/page/2.html
domain.com/reviews/tech/Tech-Name.html
noms domain.com/reviews/tech/Tech-Name/page/2.html
Ville, comté et technologie ne contiennent pas toujours points positifs (c.-à-Boston vs New York +) et certains ont plus d'un plus. À l'heure actuelle c'est ce que je dois masquer les anciennes URL de style avec de nouvelles URL de style (et cela fonctionne très bien BTW):
##FIRST PAGE REVIEWS (ie. reviews/city/city-name.html)
RewriteRule ^reviews/(.*)/(.*)\-(.*)\-(.*)\-(.*)\-(.*)\.html "/reviews/?$1=$2+$3+$4+$5+$6" [NC,L]
RewriteRule ^reviews/(.*)/(.*)\-(.*)\-(.*)\-(.*)\.html "/reviews/?$1=$2+$3+$4+$5" [NC,L]
RewriteRule ^reviews/(.*)/(.*)\-(.*)\-(.*)\.html "/reviews/?$1=$2+$3+$4" [NC,L]
RewriteRule ^reviews/(.*)/(.*)\-(.*)\.html "/reviews/?$1=$2+$3" [NC,L]
RewriteRule ^reviews/(.*)/(.*)\.html "/reviews/?$1=$2" [NC,L]
##PAGINATED REVIEWS (ie. reviews/city/city-name/page/2.html)
RewriteRule ^reviews/(.*)/(.*)\-(.*)\-(.*)\-(.*)\-(.*)/page/(.*)\.html "/reviews/?$1=$2+$3+$4+$5+$6&page=$7" [NC,L]
RewriteRule ^reviews/(.*)/(.*)\-(.*)\-(.*)\-(.*)/page/(.*)\.html "/reviews/?$1=$2+$3+$4+$5&page=$6" [NC,L]
RewriteRule ^reviews/(.*)/(.*)\-(.*)\-(.*)/page/(.*)\.html "/reviews/?$1=$2+$3+$4&page=$5" [NC,L]
RewriteRule ^reviews/(.*)/(.*)\-(.*)/page/(.*)\.html "/reviews/?$1=$2+$3&page=$4" [NC,L]
RewriteRule ^reviews/(.*)/(.*)/page/(.*)\.html "/reviews/?$1=$2&page=$3" [NC,L]
La partie que j'ai des problèmes avec est 301-ment les URL de style ancien au nouveau URL de style. Voilà ce que j'ai jusqu'à présent:
RewriteCond %{QUERY_STRING} (.*)=(.*) [NC]
RewriteRule ^reviews/(.*) /reviews/%1/%2.html? [NS,R=301,NC]
RewriteCond %{QUERY_STRING} (.*)=(.*)&page=(.*) [NC]
RewriteRule ^reviews/(.*) /reviews/%1/%2/page/%3.html? [NS,R=301,NC]
Lorsque je tente cette FireFox me donne l'erreur « La page ne réoriente correctement ». Des idées?
Excellent! Merci ça a marché. La seule chose est que je devrais convertir les plus en traits d'union. Actuellement "/ reviews /? City = City + Name" vous amène à "/reviews/city/City+Name.html" où il devrait être "... City-Name.html". Aussi est-il un moyen de tout convertir en minuscules? – Yev
@Yevgeniy Женя Van Chuchin: Bien que cela soit possible avec mod_rewrite, c'est plutôt compliqué car vous ne pouvez remplacer qu'un nombre fixe d'occurrences à la fois (voir par exemple http://stackoverflow.com/questions/3791548/mod-rewrite -rule-à-enforce-canonical-percent-encoding/3806538 # 3806538). Une langue de niveau supérieur est bien préférable de faire ce genre de travail. – Gumbo
Je vais bien avec un montant fixe. 5 occurrences, c'est beaucoup, c'est ce que je fais dans la première partie (en masquant les anciennes URL de style avec un nouveau style). – Yev