Re: [Cppcms-users] CppCMS-Embedded web root
Brought to you by:
artyom-beilis
From: Rodrigo E. <rod...@gm...> - 2016-02-15 17:19:50
|
Hi Everyone, First of all, I would like to thanks the fast feedback of Stanimir and good explanation that Artyom Beilis did. I am glad to say that this *thread was resolved*. With base on the Artyom's explanation I understood how the routing of urls works. I resolved my problem in this way: First, I created index route that is the main page: dispatcher().assign("/index",&site::index,this); mapper().assign("index","/index"); And all the other url I created in the same form: dispatcher().assign("/contact-form",&site::contact_form,this); mapper().assign("contact_form","/contact-form"); dispatcher().assign("/do-something,&site::something,this); mapper().assign("something","/do-something"); To accomplish my objective, I used two regex for the rewrite url rules, like that: { "regex" : "/()" , "pattern" : "/mb.fcgi/index" }, { "regex" : ".*" , "pattern" : "/mb.fcgi$0" } The first one, does the route for url with "/" and empty urls ( http://domain.com/ and http://domain.com). And the second executes the rest of the urls (http://domain.com/contact-form and http://domain.com/do-something). I hope this thread may help another person with the same doubt Best Regard 2016-02-12 15:14 GMT-02:00 Rodrigo Emygdio <rod...@gm...>: > Hi Everyone, > > I decided to give up CppCMS-Embedded and fight with the lighttpd. I > configured the lighttpd to execute the application in the "root" of the web > service with the following configuration: > > server.port = 8080 > server.bind = "127.0.0.1" > > fastcgi.server = ( "/" => ( "localhost" => ( > "bin-path" => > "/home/emygdio/Documents/Estudo/Progamacao/C++/CppCms/RootWebServer/hello > -c > /home/emygdio/Documents/Estudo/Progamacao/C++/CppCms/RootWebServer/etc/config-lighthttpd-2.js", > "socket" => "/tmp/hello-fcgi-socket", > "fix-root-scriptname" => "enable", > "check-local" => "disable", > ))) > > The pretty urls work very well, like http://domain.com/some-pretty-url. > But the empty router like this http://domain.com/, still doesn't work. > > Any assist will be very welcome > > Thanks > > > 2016-02-12 2:14 GMT-02:00 Rodrigo Emygdio <rod...@gm...>: > >> I think that I need to explain better what I would like expect from the >> CppCms. I have a little application that I wrote in Java and have specific >> urls indexed by google: >> http://domain.com/ --> reflects the main page >> http://domain.com/[others-pretty-url] --> reflects each functions of >> the application. >> The application urls were indexed by google, and I don't want to lose >> these urls. I need to rewrite this application in C++ and I decided to use >> CppCms. Then I expect to use the same URLs as were indexed by Google. The >> main page need to responds the root url (http://domain.com/) and the >> other urls need respond like pretty urls ( >> http://domain.com/some-pretty-url). >> >> I did as Artyom tells me to do. Changing the rewrite rules as below: >> >> change: >> >> { "regex" : ".*" , "pattern" : "/mb.fcgi$0" } >> >> for this: >> >> { "regex" : "/(.*)" , "pattern" : "/mb.fcgi$1"} >> >> Immediately resolved the problem with the root url, but the rest of urls >> stop to work because the server takes the part after the "/" and >> concatenates with the /mb.fcgi. Unhappily there isn't any url with no "/" >> before them. >> I tried overcome that changing the dispatcher configuration of the url, >> like that: >> >> I changed this: >> dispatcher().assign("/contact-form",&my_app::contact_form,this); >> mapper().assign("contact_form","/contact-form"); >> >> For this: >> dispatcher().assign("contact-form",&my_app::contact_form,this); >> mapper().assign("contact_form","contact-form"); >> >> Unhappily this changing didn't work. >> >> Anybody has some idea how I can resolve that. >> Thanks >> >> 2016-02-11 20:56 GMT-02:00 Rodrigo Emygdio <rod...@gm...>: >> >>> Hi Artyom, >>> >>> Thanks very much for your feedback. I tested the virtual main method and >>> is executing properly. I changed the regex and the root url works very >>> well. The problem now is that any other url just works if I add an extra >>> "/" on the begin on the path. >>> >>> Thanks >>> >>> 2016-02-11 6:10 GMT-02:00 Artyom Beilis <art...@gm...>: >>> >>>> > class my_app : public cppcms::application{ >>>> > public: >>>> > my_app(cppcms::service& s) : cppcms::application(s){ >>>> > dispatcher().assign("",&my_app::well_come,this); >>>> > mapper().assign(""); >>>> > mapper().root(""); >>>> > } >>>> >>>> 1st check if cppcms::application::main is called (I think it should) >>>> it is virtual >>>> member function so you can override it. >>>> >>>> 2nd When you access to "localhost:8080" you get request GET / HTTP/1.0 >>>> it is mapped according to the rules to >>>> >>>> /mb.fcgi/ >>>> >>>> Than /mb.fcgi is matched and the path you get is "/" >>>> >>>> When you map to "" you Require empty path and thus it does not get >>>> dispatched. >>>> >>>> The correct is always to map to something starting with "/" or map to >>>> "/?" i.e. last "/" is optional. >>>> >>>> >>>> You can also use little bit different rule >>>> >>>> Instead of this >>>> >>>> { "regex" : ".*" , "pattern" : "/mb.fcgi$0" } >>>> >>>> Use >>>> >>>> { "regex" : "/(.*)" , "pattern" : "/mb.fcgi$1" } >>>> >>>> Than none of your urls will start from "/" >>>> >>>> it does not matter how do you do it - just pic and convention and stick >>>> to it. >>>> >>>> Artyom >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Site24x7 APM Insight: Get Deep Visibility into Application Performance >>>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month >>>> Monitor end-to-end web transactions and take corrective actions now >>>> Troubleshoot faster and improve end-user experience. Signup Now! >>>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 >>>> _______________________________________________ >>>> Cppcms-users mailing list >>>> Cpp...@li... >>>> https://lists.sourceforge.net/lists/listinfo/cppcms-users >>>> >>> >>> >> > |