Friendly URLs! It's been one of the most wanted feature in APEX from very initial days. It's one of the main complaints we hear from customers, especially for websites which are open for public. There are several benefits of having a friendly URL besides better user experience.
Finally, the wait is over! APEX team has implemented this feature, probably in the most simplest way possible (for APEX developers). Big Kudos to the APEX Team. All you need to do is, just turn on a flag in application properties. Yes, you read it right..
Now, after enabling this flag, all APEX URLs will switch to new friendly URLs
Finally, the wait is over! APEX team has implemented this feature, probably in the most simplest way possible (for APEX developers). Big Kudos to the APEX Team. All you need to do is, just turn on a flag in application properties. Yes, you read it right..
Now, after enabling this flag, all APEX URLs will switch to new friendly URLs
New URL Format:
Example link - https://apex.oracle.com/pls/apex/hari/r/demo_app/home?session=714815362925554
Part-1: https://apex.oracle.com/pls/apex/ - Host details, there is no change here
Part-2: /hari/r - Here hari is work-space path prefix and r stands for router. You can modify "Path Prefix" at "Workspace Administration > Manage Service > Set Workspace Preferences" section. Path Prefix should be unique at APEX instance level. Also, irrespective of whether you give prefix name either in upper case or in lower case, in the url, it should be always called in lower case. For e.g. below link with upper HARI will throw 404 error.
https://apex.oracle.com/pls/apex/HARI/r/demo_app/home?session=714815362925554
Part-3: /demo_app/home?session=714815362925554 - Here demo_app is application alias and home is target page alias. If no page alias is specified, then page number will be used in URL instead of page alias. After target page, first parameter should be specified after ? symbol and subsequent parameters should be specified after & symbol, like in most of the web based applications.
example - https://apex.oracle.com/pls/apex/hari/r/demo_app/ig-bulk-operation?session=714815362925554&p5_commission=10&clear=5&request=TEST
Subsequent parameters, after page number, can be in any order. For e.g. session can be at the end or page items can be at the end, it really does not matter. Also, please always use APEX_PAGE.GET_URL function to get URL dynamically. APEX_PAGE.GET_URL will handle different cases automatically for you, be it checksum generation, or link to modal page from normal page or link to normal page from modal page or any other cases that may come in future, like friendly URLs in 20.1.
Backward Compatibility:
Even after you turn "Friendly URLs" flag on, old format URLs would still work. So there is no need to change any old URL references or bookmarked URLs.
Here is the link to demo.
What do you think about this new cool feature? Do you like it?
Thank you.
Further reading: Understanding Friendly URL Syntax
Comments
Regards
Patrick
What do you mean by "In all other places f?=p syntax should still be used"? Can you give an example?
Thank you.
Application "103639" Page "f" not found.
Contact your application administrator.
You need to specify more details about the issue.
1) How was the upgrade done? Was the same APEX instance upgraded to 20.1 or have you migrated to different server with 20.1?
2) What else has been changed along with APEX? ORDS? Web Server?
3) Have you enabled "Friendly URLs" after migrating to 20.1?
4) Is it issue with one specific report or all the reports?
I suggest you to post your question in APEX Forums with all these details. https://community.oracle.com/community/groundbreakers/database/developer-tools/application_express
I know that old habits die hard, but I think that they APEX team is not fully understanding how damaging ugly URLs are to a broader use of APEX in the realm of publicly facing webapps.
The version 20.1 "friendly URL" feature is definitely a step in the right direction. I give it a 4 out of 10. The things that would raise that significantly would be:
1. Remove the /apex/
2. Remove the /r/
3. Find a way to pass parameters under the covers rather than through the URL. The new approach actually looks messier and worse to me when passing parameters.
1. apex.oracle.com was previously running with mod_plsql as webserver (pls) and apex was database access descriptor (DAD) name. I think Oracle has not changed the URL for backward compatibility, even though now apex.oracle.com uses ORDS. As you might be aware, while configuring APEX with ORDS, you can rename ords to apex or to any other name you want.
2. r stands for router. I think that's where the magic happens, converting normal urls into new format and vice versa based on "friendly url" flag
3. You can always use submit + branch approach when you want to pass several parameter values to other page. (of course it needs additional page submit)
Thank you.