1

我需要一个 .htaccess mod_rewrite 解决方案,它将采用这样的 .cgi 搜索查询:

www.mydomain.com/cgi-bin/finda/treatment.cgi?Therapy_Type=普拉提培训&City=洛杉矶&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/treatments/Pilates%20Training-Los%20Angeles-CA.html

我在这个论坛和其他人花了几天时间试图找到一个解决方案来摆脱这些 %20(编码空格),所以最终返回的 URL 看起来像上面的 1) 或 2)。

我知道这里有人必须知道如何做到这一点......帮助;-)

4

1 回答 1

0

如果您将 %20 替换为 -,那么您如何知道治疗类型的终点和城市的起点?

pilates-training-los-angeles-ca

将会

type=pilates
city=training
state=los

所以我不认为你喜欢用 - 替换 %20。但是,您可以将其替换为另一个字符,例如 _:

pilates_training-los_angeles-ca

然后,您必须将每个 _ 翻译为 PHP 脚本(或您使用的服务器端的任何语言)中的一个空格。

于 2012-05-02T07:39:48.713 回答