Как создать безопасные URL для поисковых систем в Fusebox 5.1 noxml?
Как создать безопасные URL для поисковых систем в Fusebox 5.1 noxml?
Например, я хочу это: http://www.site.com/index.cfm/app.welcome/
Вместо этого: http://www.site.com/index.cfm?fuseaction=app.welcome
Предполагается, что Fusebox 5.1 сможет это сделать. Я читал эту статью, но она относится только к версии XML. Я так мало знаю, я не уверен, с чего начать. Как мне сделать это с версией fusebox noxml?
Обновление: похоже, мне нужно добавить это в мой файл Application.cfc. Все еще не работает, хотя...
FUSEBOX_PARAMETERS.myself = "index.cfm/fuseaction/";
FUSEBOX_PARAMETERS.queryStringStart = "/";
FUSEBOX_PARAMETERS.queryStringSeparator = "/";
FUSEBOX_PARAMETERS.queryStringEqual = "/";
2 ответа
Fusebox 5.1 позволяет использовать URL-адреса SES, позволяя вам изменять? & к /. Вы все еще должны предоставить свой собственный переписчик. Тем не менее, если вы можете обновить до 5.5, он также может переписать.
Пример перезаписи
http://www.fusebox.org/forums/messageview.cfm?catid=31&threadid=6117&STARTPAGE=2
<cfscript>
// SES converter
qrystring = ArrayNew(1);
if ( Find("/",cgi.path_info) eq 1 and Find("/#self#",cgi.path_info) eq 0 ) {
qrystring = cgi.path_info;
} else if ( Len(Replace(cgi.path_info,"#self#/","")) gt 0 ) {
qrystring = ListRest(Replace(cgi.path_info,"#self#/","#self#|"),"|");
} else if ( FindNoCase("#self#/",cgi.script_name) gt 0 ) {
qrystring = ListRest(Replace(cgi.script_name,"#self#/","#self#|"),"|");
}
arQrystring = ListToArray(cgi.path_info,'/');
for ( q = 1 ; q lte ArrayLen(arQrystring) ; q = q + 2 ) {
if ( q lte ArrayLen(arQrystring) - 1 and not ( arQrystring[ Q ] is myFusebox.getApplication().fuseactionVariable and arQrystring[ q+1] is self ) ) {
attributes['#arQrystring[ Q ]#'] = arQrystring[ q+1];
}
}
</cfscript>
Если вы решите использовать Coldcourse...
http://coldcourse.riaforge.com/
Ниже поможет вам начать. Вы можете игнорировать перезапись на стороне сервера (ISAPI для IIS), если вы хотите /index.cfm/circuit/action/ URL-адреса в формате. Но если вы хотите / circuit / action / или / blah /, вам нужно сделать это на стороне сервера.
Application.cfc
Положите onApplicationStart (или onRequestStart для тестирования), чтобы поместить в память.
<cfset application.coldcourse = createObject("component","components.util.coldcourse").init("/config/coldcourse.config.cfm")>
index.cfm Поместите это до загрузки фреймворка
<cfset application.coldcourse.dispatch(cgi.path_info, cgi.script_name) />
coldcourse.config.cfm (пример конфигурации)
<cfset setEnabled(true)>
<cfset setFrameworkEvent("action")>
<cfset setFrameworkSeparator(".")>
<cfset setFrameworkActionDefault("")>
<cfset setUniqueURLs(true)>
<cfset setBaseURL("http://www.mysite.com/index.cfm")>
<!--- CUSTOM COURSES GO HERE (they will be checked in order) --->
<!--- for http://www.mysite.com/about/ pages --->
<cfset addCourse("components")>
<cfset addCourse(pattern="about",controller="main",action="about")>
<cfset addCourse(pattern="contact",controller="main",action="contact")>
<cfset addCourse(pattern="help",controller="main",action="help")>
<!--- If nothing else matches, fall back to the standard courses (you probably shouldn't edit these) --->
<cfset addCourse(":controller/:action/:id")>
<cfset addCourse(":controller/:action")>
<cfset addCourse(":controller")>
Установите ISAPI Rewrite
Убедитесь, что вы используете правильное регулярное выражение rewrite, потому что версия 2.0 отличается от 3.0.
Пример для скрипта 2.0:
# Coldcourse URL Rewrite for CF
IterationLimit 0
RewriteRule ^(/.+/.+/.*\?.+\..*)$ /index.cfm/$1
RewriteRule ^(/[^.]*)$ /index.cfm/$1
Отключить проверку наличия файла на веб-сервере
Сделайте это для IIS, если в ваших веб-журналах появляется ошибка 404.
- Откройте диспетчер IIS
- Щелкните правой кнопкой мыши по сайту и выберите "Свойства".
- Нажмите вкладку Домашний каталог
- Нажмите кнопку Конфигурация (в правом нижнем углу диалогового окна)
- Нажмите расширение.cfm и выберите "Изменить".
- Нижний левый флажок: "Проверьте, существует ли файл"