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
>>>>
>>>
>>>
>>
>
|