XF 1.2 Route Filters

Route Filters are a new system in XenForo 1.2 to allow you to change the standard URLs generated by XenForo, including any URLs generated by add-ons.

It's a fairly simple system to show, but it's very powerful with a little thought. Let's look at what you can set with it:

ss-2013-04-05_14-48-30.webp


Other than a list of route filters, that's really it for the system. So how about a few examples...

Changing a route prefix
There's an add-on that does this right now, but we can do it simply from here. For example, if you want to change the resources URL to downloads, you'd just enter resources/ in the find box and downloads/ in the replace box.

Instantly, any links to http://xenforo.com/community/resources/ would become http://xenforo.com/community/downloads/. URL canonicalization would still happen, but it'd use the new URLs.

So yes, if you want to change the forums prefix, you can do that.

Note that the find and the replace fields both need to start with a "prefix" (basically, alphanumeric and dash), so you can't simply remove a route prefix. Doing that would break everything. :)

Changing a more specific URL
If you want to change a specific URL--or any URL that begins with a particular string--you can do that with route filters.

Maybe you have a page with a URL like pages/page-name/ and you'd rather it be page-name/. You can do that by simply entering those in the find and replace boxes respectively.

You can even create different URLs for specific threads if you wanted to, or maybe a different URL for navigating pages in threads--find: threads/{title}/page-{num:digit}, replace: threads/{title}/{num:digit}-duplicate-posts .

While it may require a bit of manual work, you could get pretty creative with your URLs. You could even give your page URLs hierarchy, if that's how you store your pages:

pages/btcc/ -> btcc/
pages/btcc-2013/ -> btcc/2013/
pages/btcc-2013-drivers/ -> btcc/2013/drivers/
pages/btcc-2013-races/ -> btcc/2013/races/

Creating aliases
Up until this point, I haven't mentioned the "incoming URL conversion only" option. I've assumed that it hasn't been checked up until now.

This option lets you allow a URL to work but it doesn't affect what's considered the canonical version. So maybe we want to have releases/114 take us to our 1.1.4 release threads/xenforo-1-1-4-released.47030/ but we want the original URL to be the real URL. We could do that by putting threads/xenforo-1-1-4-released.47030/ in the find box and releases/114 in the replace box. I'm aware this might seem backwards, but the system is written from the perspective of outgoing conversions, so find represents the URL XF is generating; the incoming conversion reverses it. It means that you don't have to swap the values in find/replace if you check/uncheck the incoming only option.



...So go wild! :)
 
There is not enough words to describe my love for this new feature. How would I go if I want to convert pages url from
pages/example
to
/example

I don't like the use of pages in the url?

Again this is a very powerful feature and it only proves the amount of work you put on the product. Thank You
 
You can't replace a route with nothing so you would have to do it per page, as per the examples in the first post.
 
This option lets you allow a URL to work but it doesn't affect what's considered the canonical version. So maybe we want to have releases/114 take us to our 1.1.4 release threads/xenforo-1-1-4-released.47030/ but we want the original URL to be the real URL. We could do that by putting threads/xenforo-1-1-4-released.47030/ in the find box and releases/114 in the replace box. I'm aware this might seem backwards, but the system is written from the perspective of outgoing conversions, so find represents the URL XF is generating; the incoming conversion reverses it. It means that you don't have to swap the values in find/replace if you check/uncheck the incoming only option.

Congrats Mike, this is simply fantastic. (y)

I wonder how route filters handle HTTP response codes. Would it add redirect codes? In the case where outgoing URLs are rerouted, it would probably make sense to apply 304 redirects for the old URLs. But what to use in the case of URL aliases where the original URL is supposed to be kept? A 304 redirect would erase the original URL from search engines. Would that be a case of a temporary redirect?
 
That's very good. This means many add-ons can be more easily customised for users that don't like playing around with the route prefixes in PHP.
That's something I wanted to do when I tried my first add-on, I'm sure many people will want the same
 
Does this also redirect old routes to new routes? With the route changer addon if you change /resources to /downloads, you can still access the resource manager with /resources. If someone posts an old /resources link and google picks it up, it would be duplicated content.
 
Does this also redirect old routes to new routes? With the route changer addon if you change /resources to /downloads, you can still access the resource manager with /resources. If someone posts an old /resources link and google picks it up, it would be duplicated content.
See my post above. It depends on how the route filter uses HTTP response codes whether it's considered duplicate content or not.
 
Route filters don't do HTTP response codes at all. They simply translate URLs to/from the default format from/to the custom format. Most important pages do URL canonicalization though, so you will effectively get a 301 if you go to the wrong URL.

The default URLs will likely still work, as long as you haven't created a conflict.

It's very possible that you can create conflicts using this system (imagine threads/ -> forums/), so you will need to make sure you don't do that. (Of course, if you did threads/ -> forums/, you could probably then do forums/ -> threads/ and you'd simply flip the meaning of them.)
 
I sense some sort of CMS coming from xenForo in the near future. This feature would be a great addition to a CMS with custom routes or in wordpress terminology custom permalinks.
 
What's the impact on performance / server load as increasingly more route filters are added?

I'm not sure about the limitations of this, can we do this for the whole forum:

Change: http://xenforo.com/community/threads/route-filters.47946/

to: http://xenforo.com/forum/forum_id/route-filters.47946/ ?

and

Change: http://xenforo.com/community/forums/have-you-seen/

to:

http://xenforo.com/forum/forum_id/ ?

In other words change the complete URL structure similar to what vbseo used to do for vb, or is the system not designed for this purpose? Also how does it impact SEO, does it deal well with that (i.e. no duplicate content)?

I'm also interested in this...i need a hierarchical structure and i want to know if with route filters can i change the default structure of links...if not, a feature for change the url structure like vbseo and wordpress will be integrated in 1.2?
 
Top Bottom