IIS URLRewrite Problema variables GET
Tenemos una web con un IIS y el módulo URLRewrite instalado y queremos (esto es un ejemplo) que las urls:
www.mywebsite.com/index.php?section=articles&category=shoes
www.mywebsite.com/index.php?section=gallery&galleryType=videos
Se reescriban a:
www.mywebsite.com/articles/shoes
www.mywebsite.com/gallery/videos
Creamos en el web.config de la web las siguientes reglas:
<rewrite> <rules> <rule name="RedirectUserFriendlyURL1" stopProcessing="true"> <match url="^index\.php$" /> <conditions> <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> <add input="{QUERY_STRING}" pattern="^section=([^=&]+)&category=([^=&]+)$" /> </conditions> <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" /> </rule> <rule name="RewriteUserFriendlyURL1" stopProcessing="true"> <match url="^([^/]+)/([^/]+)/?$" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php?section={R:1}&category={R:2}" /> </rule> <rule name="RedirectUserFriendlyURL2" stopProcessing="true"> <match url="^index\.php$" /> <conditions> <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> <add input="{QUERY_STRING}" pattern="^section=([^=&]+)&galleryType=([^=&]+)$" /> </conditions> <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" /> </rule> <rule name="RewriteUserFriendlyURL2" stopProcessing="true"> <match url="^([^/]+)/([^/]+)/?$" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php?section={R:1}&galleryType={R:2}" /> </rule> </rules> </rewrite>
Y cuando vamos a "www.mywebsite.com/index.php?section=articles&category=shoes" redirige a:
www.mywebsite.com/articles/shoes
y todo va bien.
Pero cuando vamos a "www.mywebsite.com/index.php?section=gallery&galleryType=videos" redirige correctamente a:
www.mywebsite.com/gallery/videos
pero la página no funciona.
He mostrado el array $_REQUEST con un var_dump, y en el primer caso muestra:
REQUEST: array(2) { ["section"]=> string(8) "articles" ["category"]=> string(5) "shoes" }
Pero en el segundo:
REQUEST: array(2) { ["section"]=> string(7) "gallery" ["category"]=> string(6) "videos" }
En este caso está cogiendo 'category' en lugar de 'galleryType'. Y por lo tanto, no funciona, ya que en la web usamos las variables GET para hacer las consultas a la base de datos y obtener los contenidos.
Imagino que estoy haciendo algo mal o usando un enfoque erróneo.
¿Alguna