Our system
Our search module can have many parameters like
- search keyword
- examination filter
- subject filter
- date range filter
- course name filter ... ... etc
and there are pagination and sorting parameters like
- Page number
- Number of results in a page
- sort field
- sort order
We used to have URLs like:-
www.projectname/module/search/<search keyword>/<examination filter>/<subject filter>/
www.projectname/module/search/<search keyword>/<examination filter>/<subject filter>/<Page number>,<Number of results in a page>,<sort field>,<sort order>
.... ... ...
And we were having one rewrite rule in htaccess for every variation.
Current Problem
Because of the trouble of multiple URLs causing problems in maintenance of code, I am now resorting to PHP functions to do the task instead of htaccess, something similar to URL libraries of frameworks like Zend, Codeignitor.
My Question
I just want some suggestions on which of the following conventions of URL format is better to follow considering the fact that all the search filters/parmas will not be needed everytime. So, which of the following 2 conventions are better to follow:-
Having all the URL parameters present in all URLs, regardless of whether they are needed or not, like :-
www.projectname/module/search/hello//110/...all other params present...
Here we do not need to mention that the which param is search keyword and which one is subject filter. A simple URL parser functions always assumes the 2nd param from www.projectname/module/ as the search keyword (hello in this case) and similarly for other params. In this example exam filter is not applicable and so it is left blank and it does not break URL but is it nice. If there were many blank params then there will appear many back to back slashes
Allowing freedom to pass URL params in any order like this:-
www.projectname/module/search/search_keyword/hello/subject_filter/110/...other needed params only present... www.projectname/module/search/subject_filter/110/search_keyword/hello/...other needed params only present...
Both of these URLs mean the same In this convention, the URL parser function parses every name-value pair and takes the value next to name "search_keyword" as the search keyword and similarly for others (in this example name = search_keyword, value = hello). The function will parse each every name value pair and so the term search_keyword appearing as value for some other pair will not interfere.
Please consider the following factors while suggesting:- - SEO friendliness - ease of maintainability (considering new filters may be added in future)
Please give some tips on improving SEO friendliness. I have little knowledge on that
Thanks