我需要一个.htaccess mod_rewrite解决方案,它将采用这样的.cgi搜索查询:
www.mydomain.com/cgi-bin/finda/therapist.cgi?Therapy_Type=Pilates Training& City = Los Angeles& State = CA
并在浏览器的地址栏中返回匹配结果,如下所示:
www.mydomain.com/therapists/Pilates-Training-Los-Angeles-CA.html
或更好:
www.mydomain.com/therapists/pilates-training-los-angeles-ca.html
请注意,数据库包含带有一个,两个或三个单词+空格的值...
例如:
Therapy_Type=Pilates Training <- includes a space
City=Los Angeles <- includes a space
State=CA <- no space
我使用http://www.generateit.net/mod-rewrite/处的工具生成以下RewriteRule:
RewriteEngine On
RewriteRule ^([^-]*)-([^-]*)-([^-]*)\.html$ /cgi-bin/finda/therapist.cgi?Therapy_Types=$1&City=$2&State=$3 [L]
这确实有效(找到搜索匹配项)并生成结果页面,但由于参数值中包含空格,我们最终得到的URL如下所示:
www.mydomain.com/therapists/Pilates%20Training-Los%20Angeles-CA.html
我在这个论坛上花了好几天时间和其他人试图找到解决这些%20(编码空格)的解决方案,以便最终返回的URL看起来像上面的1)或2)。
我知道这里有人必须知道如何做到这一点......帮助; - )
答案 0 :(得分:0)
如果用%替换%20,那么你怎么知道治疗类型的终点和城市的开始?
pilates-training-los-angeles-ca
将是
type=pilates
city=training
state=los
所以我认为你不想用%替换%20。但是,您可以将其替换为另一个字符,例如_:
pilates_training-los_angeles-ca
然后,您必须将每个_转换为PHP脚本中的空格(或者您使用服务器端的任何语言)。