joomla rename component url using htaccess - joomla

I'm building an eshop using Joomla 2.5 and a commercial component for a guy who wants to have multiple vendros and I'm stuck on how to change the component's url.
What I want to change is the url that is displayed when the users passes from a link with his mouse.
For instance, the component has a SEF function which rewrites urls and makes them like that:
http://www.site.com/componentname/products/productname-productid-productcategoryid-vendorid.html
http://www.site.com/componentname/catalog/categoryname-categoryid-numberofpage.html
and what I want is to make it:
http://www.site.com/shop/products/productname-productid-productcategoryid-vendorid.html
http://www.site.com/shop/catalog/categoryname-categoryid-numberofpage.html
So when a user passes over a link it will show him the new url. Is this possible with .htaccess and rewrite rules or this can only be done through the component only? I'm asking this as the component is encoded with ioncube so I can't do it myself.
Thanks in advance!

While you can use .htaccess to rewrite any URL it won't work with Joomla! as the SEF URL is created by JRoute which uses a combination of the core route function and the route.php for the component.
The URL segments are used to find the right component to handle the request, so to change the way the URL is built you would have to modify the route.php of the component (and obviously other parts as well).
For more information on how SEF support works, read this on docs.joomla.org

Related

frindly routing in joomla

I am doing a website in joomla 3.0, I have select a friendly URi in the backend.
I create several componente for the website too, and my route to access to this component is like this.
<?php $link =JRoute::_('index.php?option=com_projects&view=proyectos&format=raw&task=proyecto&id='. $item->id);?>
But when the browser show this router it isnĀ“t friendly router.
Any idea?
You need to create a router.php file for your component to tell joomla how to build the sef url and then parse it when the sef url is requested.
Check out the components/weblinks/router.php file for an example.
Alternatively, if you are using a sef component like joomsef or sh404sef, you will need to create a plugin for your component. You can find documentation on how to do this on the component makers websites.

What is the best way to customize Joomla urls?

I have a big joomla site and I want to customize its links to be as SEF as possible. I need an alias for each individual article and custom component item. Is it better to use the router.php class in each component or to assign a hidden menu item for each one from the perspective of the load on the server and the clean xml generated sitemaps?
Thanks in advance
As i understand your question i would like to suggest you to use sh404SEF. It rewrites Joomla URL to user-friendly format (SEF URL or URL rewriting):
For Example:
mysite.com/index.php?option=com_content&Itemid=69&id=34... becomes
mysite.com/en/sh404SEF-and-url-rewriting/list-of-available-plugins.html.
It is also a security component. Page title and meta tags manager for every page. With or without .htaccess file. Joomfish compatible. Caching system for high speed and very small DB queries overhead.
Or as you say you can also use router.php class in each of your component to make sef url. Hope this will help you.

Custom URL for Magento's basket page

I'd like to implement custom URL for our Magento's basket. Magento out-of-the-box url paht is /checkout/cart but client request /checkout/bag.
I tried to somehow
* URL rewrite management in backend - it works, but I need to update all occurences in code to new url, because $this->getUrl('checkout/cart') doesnt translate into checkout/bag
* also I tried to follow some advices from http://alanstorm.com/magento_dispatch_rewrites_intro but basicaly it doesnt help me too.
* also I tried example from this post http://phprelated.myworks.ro/two-add-to-cart-buttons-with-different-redirect-actions-at-once-in-magnto/
So, is there any way how can I rewrite translation from path 'checkout/cart' into checkout/bag without updating all ocurrences in our templates and classes $this->getUrl('checkout/cart')
Any solution depending on web server architecture are not the ultimate solution.
I found solution
1) I rewrited model core/url to have desired output
EDIT 1 - sample implementation https://gist.github.com/jaromirmuller/132cdd9378e5b1018170
2) Added url rewrite into config.xml which rewrites url path from /checkout/bag to /checkout/cart
<global>
<rewrite>
<mynamespace_mymodule_checkout_cart>
<from><![CDATA[#^/checkout/bag#]]></from>
<to>/checkout/cart</to>
</mynamespace_mymodule_checkout_cart>
</rewrite>
</global>
3) Added url rewrite into Catalog > URL rewrite management which handles if anyone comes to /checkout/cart then he's redirected to /checkout/bag paht which is correct.
These 3 points makes site consisten and working without any issues. That's the easises way without rewriting tons of templates and classes.
The way Url Rewrites work means that you have some url test.com/some on the page and when you click on it, you'll get test.com/some2 instead. So Rewrites do not change the actual anchor link - they change the destination of that link to the new recipient.
There is no easy solution which will change all of the anchor links to the new ones (aside from parsing and replacing links on each page - which is not preferable).
So if you want to leave anchor links as they are and get the new Url after user clicks on the link, you should go with Url Rewrites. Though if you want to change the actual links on the page, you need to search for all occurrences and change them manually.
Mage::getUrl() is not a fabric which operates with aliases (like Mage::getModel()) - you'll get from it what you have inserted, and the only way to change the outcome Url is to change income parameters.
You can do it using apache url rewrites. Something like
RewriteRule ^/checkout/cart(.*)$ /checkout/bag$1 [R=301,NC,L]
This answer works for changing the wishlist name by changing the frontend routers in app/etc/local.xml. Maybe it can be adapted for your uses?
Change wishlist url in magento
To manage more url translation You can use this module:
http://www.magentocommerce.com/magento-connect/catalog/product/view/id/18160/

Get the SEF URLs for articles in Joomla

I use 'No Editor' in Joomla with SEF URLs enabled. With no SEF enabled it's easy to know the URL by just getting the ID of the article. Something like:
Article 1 would be:
http://www.abc.com/j15/index.php?option=com_content&view=article&id=1&Itemid=1
Now if I have SEF switched on, I would get URLs that look like:
http://www.abc.com/j15/the-content.html
Is there a way inside Joomla where I can find out what the SEF URL for a particular page is?
Currently I add these articles to a menu, then from the front-end I get the SEF URL and then use it. I know the process is a little dumb, but I want to find out if there is a better way inside Joomla where you can get the SEF URL (using 'No Editor').
Upload a component, sh404sef or ARTIOsef, to the administrator panel. Here you can manage SEF URLs as well as the old URL and what new name you want to give it.

Use relative urls in Joomla menus

I have joomla site which is located in mydomain.com/somefolder/otherfolder/TheSite. I have created a rewrite rule to invisibly redirect all requests beginning with mydomain.com/TheSite to this url. It works fine.
My problem is that the urls that my menuitems point to are the old mydomain/somefolder/otherfolder/TheSite/stuff. If they were relative urls, it would work.
My question: How can I force joomla to use relative urls for the menuitems, or use the urls I explicitly specify?
Thanks in advance
Probably the easiest way to make Joomla produce only relative URLs is to edit the core method "_" of the JRoute class:
JRoute::_()
This is called by Joomla application and extensions to generate consistent URLs.
It is found in:
libraries/joomla/methods.php
Making Joomla spit out relative URLs probably isn't the best way to do it. Making the absolute URLs point correctly would.

Resources