Filter by content type and shared taxonomy terms I want to classify my content within the following categories:


Technology
International Politics 
Education
Religion
Sports


They are shared among my content types (e.g. news, page).
I want to create listing pages filtering by category, something like "news/international-politics" (notice the clean URL).

What is the best way to achieve this?

I've kind of done it with a shared taxonomy and a view per content type with an argument, but then I can't use the taxonomy links and have to build them by hand (cleaning the taxonomy name), but it's not a very clean solution.
To create the view

Create a view with appropriate fields/whatever.
Add the first argument Node: Type.
Add the second argument Taxonomy: Term.
For the second argument select Transform spaces to dashes in URL.

To create the listing page
Option 1
Bite the bullet and create the page in code. You just need to iterate over the content types and terms, creating the links as you go.
Option 2
Create a normal view that lists the taxonomy terms. Use link rewriting in the view to output a link that's contains the term name and content type, and is easily identifiable. Eg. custom_term_list/news/International Politics. Use custom_url_rewrite_outbound() to translate this to /news/international-politics. Gotta be careful not to slow the site down here.
Option 3
Use a terms as nodes paradigm. (I think this would work.) Create a content type for which each node will refer to a term. This can be done with taxonomy_node, nat (Node Auto Term), or even content_taxonomy (and maybe others for all I know). Add a computed_field that calculates the name of the term with spaces turned to dashes (or whatever). Then it would be easy to make the listing. If you want the node term to be created automatically when a term's created, then you'll need to use one of the first two modules mentioned.
Those are the only approaches I can think of to create listing pages. I think I'd just go for the first one.