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