Хорошо, я собираюсь сделать несколько предположений на основе приведенных выше URL-адресов SES, того, что вы пытаетесь сделать, и того, как разместить его в CGI.PATH_INFO ниже.
Корневой каталог,.htaccess файл:
RewriteEngine On
RewriteCond %{THE_REQUEST} /crm/([^?\ ]+)
RewriteRule ^.*$ /public/index.cfm/%1 [NC,L]
/ публичный каталог.Файл .htaccess:
RewriteEngine Off
Это будет перенаправлено в CGI.PATH_INFO для анализа.Прочтите далее, как разобрать это.
Когда вы используете URL-адреса в поисковой системе (SES), где все ваши ключи / значения разделены прямой косой чертой, ColdFusion рассмотрит их в серверной переменной CGI.PATH_INFOобычно зарезервирован для каталогов.
Итак, зная это, используйте простой механизм извлечения для его анализа:
<cfset SESQueryString = CGI.PATH_INFO />
<cfset num_pairs = ListLen(SESQueryString,'/') />
<cfset keyVals = StructNew() />
<cfloop from="1" to="#num_pairs#" step="2" index="i">
<cfset keyVals[ListGetAt(SESQueryString,i,'/')] = ListGetAt(SESQueryString,i+1,'/') />
</cfloop>
<cfdump var=#keyVals#>
Имейте в виду, что в этом ответе предполагается, что у вас четное число ключей /val соответствует в CGI.PATH_INFO.Также помните, что функции List * в CF будут (во многих случаях) выбрасывать пустое значение списка, поэтому вы можете подумать, что у вас есть четное число, а на самом деле его нет.
Сканирование функций списка в Adobe LiveDocsили cfquickdocs.com, чтобы узнать, есть ли у функции списка, с которой вы работаете, параметр, который вы можете передать, который заставит ее принудительно пустить пустые значения списка в вашем списке.Одной из таких функций является ListToArray()
.