[ 
https://issues.apache.org/jira/browse/OFBIZ-5312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13820590#comment-13820590
 ] 

Jacques Le Roux edited comment on OFBIZ-5312 at 11/12/13 10:41 PM:
-------------------------------------------------------------------

Here is a summary of the curent state of the branch , and new requirements 
specifications:

*Current state* (issues in bold)
#  Only the OFBiz moutpoint (eg ecommerce) is used to define the "primary url". 
So we have http://localhost:8080/ecommerce/ instead of previously 
http://localhost:8080/ecommerce/control/main.
# The /category/ and /product/ part of the url (prefixes) are mandatories. This 
to discriminate in case of (unlikely but possible) same Ids for both a category 
and a product.
# Only 1 level of category is supported, no complete paths to sub-categories.
# The internal product name or category name _AND_ the product or category Ids 
are used to build the urls.
# The generated urls end with the suffix ".html".
# *You can get to a category or product with different urls*. All mixed 
combinations of upper or lower cases are possible, even for the /category/ and 
/product/ prefixes. *This is a NO-NO in a SEO perspective, because of possible 
duplicated contents*.
# *When you get to a category, from the left category tree, the url does not 
change.* Note that it works from the breadcrumb.

\\
\\
*New requirements/propositions "specifications"* (issues in bold). Each of 
these new requirements, must be handled in a separated sub-task (Jira issues).
# Like we have /category/ and /product/, adding /catalog/ in the generated urls 
should be considered.
# *The /category/ and /product/ prefixes should always be in lower case.*
# *The categoryId and productId part of the generated urls must respect user 
enterered  or generated case* (they are primary keys and only them, with 
/category/ and /product/ prefixes, guarantee urls unicity).
# Though you can create a product with special characters (not ANSI), an url 
like <<http://localhost:8080/ecommerce/çà-test.html>> (rendered as shown) is 
not supported. *Special characters should be UTF-8 encoded and corresponding 
pages correctly rendered*. 
#  About the ."html" suffix, we all agreed having it or not is a moot point. So 
we will provide a property for user choice, say "productWithHmlSuffix". And to 
mimic REST, where ressources are simply URLs without suffixes, we will use 
"productWithHmlSuffix=N" OOTB (ie use a property which default to no ".html" 
suffix).
# Check [Pierre Smits's comment 
above|https://issues.apache.org/jira/browse/OFBIZ-5312?focusedCommentId=13797683]
 about *multi-tenant in ecommerce*.
# Configuration of the content and search urls, Parimal respectively suggested 
Domain_Name/content/content_name and Domain_Name/search/keyword. 
# Documentation of SEO generated urls parameters.
# We could introduce multi levels for categories, ie complete paths to 
sub-categories. For instance, from the breadcrumb, you get to 
http://localhost:8080/ecommerce/category/large-gizmos-102.html but not 
http://localhost:8080/ecommerce/category/gismos-100/large-gizmos-102.html. From 
an SEO POV there is no need for the second. But for OFBiz users (those handling 
content) it could be nice to have the choice. It must be a choice (using a 
property) because if you have 10 levels or more (you never know what people can 
come with ) with the 2nd possibilty only, OFBiz would render far too long URLs. 
Notably if the category names are long. This is optional, by default 1 level of 
category will be used.
# To shorten URLs, OFBiz users could want to remove the "product category name" 
or/and the the "internal product name" from the generated urls. So we should 
allow to not add them. This should be documented options (properties) for both
** categoryUrlWithOnlyNumber
** productUrlWithOnlyNumber.

\\
\\
*Technical notes*
# About Special characters to UTF-8 encoded in generated urls, see 
SeoContextFilter.java comment: <<"// check to make sure the requested url is 
allowed>>
# The new effort for content and search urls could be based on the work done 
for category and product. SeoContentUrlFilter.java must be checked to see if 
not (partially?) already done.
# In a comment above, I noted that "The Perl5Matcher Perl5Compiler are not 
thread safe". This was handled by Jinghai using the 
Perl5Compiler.READ_ONLY_MASK field.  It's a thread safe implementation and I 
also noticed Jinghai used local caches (userExceptionPatterns and seoPatterns 
Maps) for multiple compiled patterns (fixed unique asciiPattern and 
regexpIfMatch are not concerned). As noted in the oro Javadoc, there is a small 
pattern matching overhead when using Perl5Compiler.READ_ONLY_MASK. The OFBiz 
OOTB ComilerMatcher class can be used to workaround this if really necessary. I 
believe we don't need to worry about that OOTB, but it's worth to be noted here.
# Check the use org.ofbiz.product.category.ftl.UrlRegexpTransform instead of 
org.ofbiz.webapp.ftl.OfbizUrlTransform for ofbizUrl macro.

\\
\\
Please add a comment, if you see something is wrong, missing or complete, 
thanks!


was (Author: jacques.le.roux):
Here is a summary of the curent state of the branch , and new requirements 
specifications:

*Current state* (issues in bold)
#  Only the OFBiz moutpoint (eg ecommerce) is used to define the "primary url". 
So we have http://localhost:8080/ecommerce/ instead of previously 
http://localhost:8080/ecommerce/control/main.
# The /category/ and /product/ part of the url (prefixes) are mandatories. This 
to discriminate in case of (unlikely but possible) same Ids for both a category 
and a product.
# Only 1 level of category is supported, no complete paths to sub-categories.
# The internal product name or category name _AND_ the product or category Ids 
are used to build the urls.
# The generated urls end with the suffix ".html".
# *You can get to a category or product with different urls*. All mixed 
combinations of upper or lower cases are possible, even for the /category/ and 
/product/ prefixes. *This is a NO-NO in a SEO perspective, because of possible 
duplicated contents*.
# *When you get to a category, from the left category tree, the url does not 
change.* Note that it works from the breadcrumb.

\\
\\
*New requirements/propositions "specifications"* (issues in bold). Each of 
these new requirements, must be handled in a separated sub-task (Jira issues).
# Like we have /category/ and /product/, adding /catalog/ in the generated urls 
should be considered.
# *The /category/ and /product/ prefixes should always be in lower case.*
# *The categoryId and productId part of the generated urls must respect user 
enterered  or generated case* (they are primary keys and only them, with 
/category/ and /product/ prefixes, guarantee urls unicity).
# Though you can create a product with special characters (not ANSI), an url 
like <<http://localhost:8080/ecommerce/çà-test.html>> (rendered as shown) is 
not supported. *Special characters should be UTF-8 encoded and corresponding 
pages correctly rendered*. 
#  About the ."html" suffix, we all agreed having it or not is a moot point. So 
we will provide a property for user choice, say "productWithHmlSuffix". And to 
mimic REST, where ressources are simply URLs without suffixes, we will use 
"productWithHmlSuffix=N" OOTB (ie use a property which default to no ".html" 
suffix).
# Check [Pierre Smits's comment 
above|https://issues.apache.org/jira/browse/OFBIZ-5312?focusedCommentId=13797683]
 about *multi-tenant in ecommerce*.
# Configuration of the content and search urls, Parimal respectively suggested 
Domain_Name/content/content_name and Domain_Name/search/keyword. 
# Documentation of SEO generated urls parameters.
# We could introduce multi levels for categories, ie complete paths to 
sub-categories. For instance, from the breadcrumb, you get to 
http://localhost:8080/ecommerce/category/large-gizmos-102.html but not 
http://localhost:8080/ecommerce/category/gismos-100/large-gizmos-102.html. From 
an SEO POV there is no need for the second. But for OFBiz users (those handling 
content) it could be nice to have the choice. It must be a choice (using a 
property) because if you have 10 levels or more (you never know what people can 
come with ) with the 2nd possibilty only, OFBiz would render far too long URLs. 
Notably if the category names are long. This is optional, by default 1 level of 
category will be used.
# To shorten URLs, OFBiz users could want to remove the "product category name" 
or/and the the "internal product name" from the generated urls. So we should 
allow to not add them. This should be documented options (properties) for both
* categoryUrlWithOnlyNumber
* productUrlWithOnlyNumber.

\\
\\
*Technical notes*
# About Special characters to UTF-8 encoded in generated urls, see 
SeoContextFilter.java comment: <<"// check to make sure the requested url is 
allowed>>
# The new effort for content and search urls could be based on the work done 
for category and product. SeoContentUrlFilter.java must be checked to see if 
not (partially?) already done.
# In a comment above, I noted that "The Perl5Matcher Perl5Compiler are not 
thread safe". This was handled by Jinghai using the 
Perl5Compiler.READ_ONLY_MASK field.  It's a thread safe implementation and I 
also noticed Jinghai used local caches (userExceptionPatterns and seoPatterns 
Maps) for multiple compiled patterns (fixed unique asciiPattern and 
regexpIfMatch are not concerned). As noted in the oro Javadoc, there is a small 
pattern matching overhead when using Perl5Compiler.READ_ONLY_MASK. The OFBiz 
OOTB ComilerMatcher class can be used to workaround this if really necessary. I 
believe we don't need to worry about that OOTB, but it's worth to be noted here.
# Check the use org.ofbiz.product.category.ftl.UrlRegexpTransform instead of 
org.ofbiz.webapp.ftl.OfbizUrlTransform for ofbizUrl macro.

\\
\\
Please add a comment, if you see something is wrong, missing or complete, 
thanks!

> Proposal: URL-Generation Changes
> --------------------------------
>
>                 Key: OFBIZ-5312
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-5312
>             Project: OFBiz
>          Issue Type: New Feature
>          Components: specialpurpose/ecommerce
>    Affects Versions: SVN trunk
>            Reporter: Jacques Le Roux
>            Assignee: Jacques Le Roux
>            Priority: Minor
>              Labels: changes, ecommerce, friendly, seo, url
>             Fix For: SVN trunk
>
>         Attachments: OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 - 
> ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 
> - ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch, 
> OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 - 
> ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 
> - ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch, 
> OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 - 
> ofbiz-ecommerce-seo.patch, OFBiz-5312-product-ecommerce-seo-20131031.patch, 
> OFBiz-5312-product-ecommerce-seo-for-seo-branch.patch, 
> OFBiz-5312-product-ecommerce-seo.patch, SeoContextFilter.java.patch
>
>
> [This was proposed by Paul Piper in Nabble 7 months 
> ago|http://ofbiz.135035.n4.nabble.com/Proposal-URL-Generation-Changes-td4639289.html].
>  Here is quoted Paul's proposal
> {quote}
> Hey Everyone,
> over at ilscipio (www.ilscipio.com) we developed a set of functional OFBiz 
> changes that we believe the entire community could benefit from. The changes 
> have been implemented in parts in Syracus (www.syracus.net) for a while now, 
> but we figured that some of which are too crucial for ofbiz' success in the 
> long run, so we are considering the contribution (as we did with the SOLR 
> component).
> As you are probably aware, OFBiz has a pretty uncommon way of generating 
> URLs. Most of this has to do with the fact that OFBiz uses a servlet 
> (ControlServlet)  to handle all requests. The servlet is mounted at /control, 
> so that it won't interfere with other servlets. Though functionally valid, 
> this has the sideeffect that all urls are actually created on /control, which 
> is neither pretty, nor good by any measures of SEO. It also means that a few 
> 302 redirects are necessary to forward the user from / to /control/main. It 
> also makes requests more complicated, since many forwards are necessary 
> whenever somebody wants to move away from this implementation.
> Since this is hurtful to many of the implementers, I wanted to discuss 
> whether or not you guys would be interested in the changes we have made. The 
> functional changes contain:
> * Removal of /control out of all the urls
> * SEO-friendly URLS
> * Configurable product/category and other URLs
> * Frontpage mapping from /main to /
> It was tested on our end and contains all necessary improvements (Transforms, 
> Sample Configuration, Servlets & Filters) for it to be applicable.
> If interested, I would create a new JIRA ticket for this and after a few 
> minor internal discussions, we will gladly provide the rest of you with it.
> Regards,
> Paul 
> {quote}
> There is even a patch, mostly done by Jinghai Shi, that I attach here. Even 
> if it has been already used in [Syracus|http://syracus.net/] since early this 
> year, some help would be needed to test it thoroughly in OFBiz.
> Then we should discuss if it's the way to go. I believe it is. Who needs a 
> /control/ or /main by default in ecommerce urls? Would you not prefer 
> http://localhost:8080/ecommerce/ over 
> http://localhost:8080/ecommerce/control/main ?



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to