Make sure to put all your handler names in your controller as a comma separated list into the global
variable gControllerHandlers, otherwise you get a "Page Not Found" error.
See the comments in the sample files in the application/controllers folder.
If you enable error logging in application/config/config.lc make sure that the application/logs folder is writable.
Search-Engine Friendly URLs
If you find that no matter what you put in your URL only your default page is loading, it might be that your server
does not support the PATH_INFO variable needed to serve search-engine friendly URLs. This does not apply to the
LiveCode hosting service.
As a first step, open your application/config/config.lc file and look for the URI Protocol information. It will recommend that you try a couple alternate settings. If it still doesn't work you may try to use query string based URLs by setting gConfig["enableQueryStrings"] in the config.lc file to TRUE.
Setting Headers and Cookies
If you have problems setting headers or cookies watch out for whitespace. Make sure that there is no whitespace before the <?lc tag of your script files and that no whitespace follows the terminating "?>" tag because anything outside the opening and closing tags will be sent before the actual content (generated by your script), including the default headers sent by the engine. This means setting custom headers by script has no effect because headers can be sent only once. Generally it is better to leave terminating "?>" tags off, this way whitespace at the end of the script does not accidentally output content to the browser. Furthermore make sure that your files are not saved using UTF-8 (BOM). Using BOM prevents changing any header because characters are sent prior to sending headers, this means headers you set or cookies can not be sent.
Cross Site Request Forgery Protection (CSRF)
In case CSRF Protection yields error "The action you have requested is not allowed.", either set the master time reference in application/config/config.lc to “gmt” or increase the value of gConfig["csrf_expire”] (the number in seconds the CSRF token should expire), also found in config.lc.
Code in View Files
Keep in mind, that using return statements enclosed in "<?" and "?>" is the only way to include LiveCode in your view files like in the following example:
<? put "<ul>" into tToDo repeat for each item thisItem in gData["toDoList"] put "<li>" & thisItem & "</li>" after tToDo end repeat put "</ul>" after tToDo return tToDo ?>
As of server version 7.0.6-rc-1 the SMTP protocol is not available on Linux because the commands open socket with message and write to socket are still not working in the Linux server engine. On Mac OS X SMTP should work as expected since server version 7.0.1.
Update: Sockets work in Linux server engine since version 7.1.0 RC 1 too. This means you can use the SMTP protocol on Linux.
Update: This issue reappeared with LC server version 8.0.0 and applies to all socket callback messages. So, sending emails using SMTP is broken again.
As of server version 7.0.6-rc-1 the Trackback library does not work on Linux because the write to socket command is still not working in the Linux server engine. On Mac OS X Trackback should work as expected since server version 7.0.1.
Update: Sockets work in Linux server engine since version 7.1.0 RC 1 too. This means you can use the Trackback library on Linux.
Update: This issue reappeared with LC server version 9.0.0 on macOS.
Asynchronous requests are currently (up to LC server version 9.6.1) not working, presumably this is due to a bug in tsNet, see bug 18961.
Gzip output compression does not work with 32bit Linux LC server versions 9.0.5 and 9.5.0. So, if you set gConfig["compress_output"] in config.lc to TRUE you need to use either a 64bit server or the 32bit flavor of version 9.0.4.