SES url в холодном состоянии - нет MVC - PullRequest
0 голосов
/ 08 марта 2011

Получил этот URL

http://localhost:8500/users.cfm?userid=John

, который загружает профиль пользователя, получая данные о пользователях из базы данных

WHERE userid = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#url.userid#">

Как можно получить доступ к одному и тому же профилю следующим образом:

http://localhost:8500/John

Вместо того, чтобы пользователям вводить «users.cfm? Userid = John», они просто вводят идентификатор пользователя, которого хотят просмотреть.

На CF9, IIS7

Мне может понадобиться установить http://www.iis.net/download/urlrewrite для решения, пожалуйста, совет.

Ценю вашу помощь.

Ответы [ 3 ]

2 голосов
/ 08 марта 2011

Используя URLRewrite, переписчик задает запрошенный URL (например, /John) в качестве заголовка запроса и передает его в один файл .cfm (т. Е. front controller ).В файле .cfm (например, frontcontroller.cfm) прочитайте заголовок запроса (т.е. GetHttpRequestData().headers) и обработайте соответственно -> users.cfm?userid=john.

1 голос
/ 08 марта 2011

Если вы решите использовать такой инструмент, как ISAPI Rewrite (не бесплатный), который позволяет вам писать правила перезаписи, аналогичные тем, которые используются в Apache, вы добавите:

RewriteRule ^(.*)$ /users.cfm?userid=$1 [NC,L,QSA]

Вы также можете добавлять папкиили другие URL-адреса для исключают из этого правила с чем-то вроде:

RewriteCond %{REQUEST_URI} !^(assets|images|xml|tasks) [NC]
RewriteRule ^_admin/(.*)$ /_admin/index.cfm/$1 [NC,L,QSA]

Я бы порекомендовал использовать правило перезаписи вместо обработки его в CFML, чтобы уменьшить обработку, обрабатываемую сервером CF.

1 голос
/ 08 марта 2011

Лично, возможно, вы могли бы использовать метод OnRequest в Application.cfc.Этот метод позволяет вам фильтровать запросы и предоставлять им специальную обработку.

http://www.bennadel.com/blog/805-ColdFusion-Application-cfc-OnRequest-Creates-A-Component-Mixin.htm

В вашем примере вы можете взять «Джон» или любую строку, если она существует в корне,и

<cfinclude template="#application.baseHREF#/users.cfm?userid=#userID#" />

Если вы определите baseHREF в OnApplicationStart.

...