How Can We Help?
URL Friendly en Open Real State
Eliminación de sufijo property en propiedades.
En su configuración original, Open Real State (en adelante ORS) asume que todas las propiedades publicadas tendrán un sufijo property en la url de cada detalle de propiedad y no admite uso de slash en la url personalizada.
Para la modificación de esta característica deben ser intervenidos dos componentes base:
- archivo /protected/modules/seo/models/SeoFriendlyUrl.php
- archivo /protected/components/CustomUrlManager.php
Modificaciones en SeoFriendlyUrl.php
Código Original:
private static $_prefixUrlArray = array(
'Apartment' => 'property/',
'EntriesCategory' => '',
'Entries' => '',
'Article' => 'faq/',
'InfoPages' => 'page/',
'ApartmentObjType' => '',
'City' => '',
'ApartmentCity' => '',
);
Código Modificado:
private static $_prefixUrlArray = array(
'Apartment' => 'venta/',
'EntriesCategory' => '',
'Entries' => '',
'Article' => 'faq/',
'InfoPages' => 'page/',
'ApartmentObjType' => '',
'City' => '',
'ApartmentCity' => '',
);
Modificación de rules para la clase SeoFriendlyUrl
Se requiere incorporar el slash en el patrón que verifica la action de guardar de la url personalizada en los distintos módulos

Modificaciones en CustomUrlManager.php
Código Original:
$rulesLangTwo = array(
'/entries' => 'entries/main/index',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>' => 'entries/main/index',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<tag:[\w\s,]' => 'entries/main/index',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<id:\d+>' => 'entries/main/view',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'entries/main/view',
'/faq' => 'articles/main/index',
'/faq/<id:\d+>' => 'articles/main/view',
'/faq/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'articles/main/view',
'/contact-us' => 'contactform/main/index',
'/specialoffers' => 'specialoffers/main/index',
'/sitemap' => 'sitemap/main/index',
'/reviews' => 'reviews/main/index',
'/reviews/add' => 'reviews/main/add',
'/guestad/add' => 'guestad/main/create',
'/page/<id:\d+>' => 'infopages/main/view',
'/page/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'infopages/main/view',
'/search' => 'quicksearch/main/mainsearch',
'/comparisonList' => 'comparisonList/main/index',
'/complain/add' => 'apartmentsComplain/main/complain',
'/booking/add' => 'booking/main/bookingform',
'/booking/request' => 'booking/main/mainform',
'/usercpanel' => 'usercpanel/main/index',
'/usercpanel/data' => 'usercpanel/main/data',
'/usercpanel/changepwd' => 'usercpanel/main/changepassword',
'/usercpanel/tariffplans' => 'tariffPlans/main/index',
'/usercpanel/payments' => 'usercpanel/main/payments',
'/usercpanel/balance' => 'usercpanel/main/balance',
'/usercpanel/bookingtable' => 'bookingtable/main/index',
'/usercpanel/bookingtable/my' => 'bookingtable/main/my',
'/usercpanel/bookingtable/payforbooking' => 'paidservices/main/payForBooking',
'/usercpanel/comments' => 'comments/main/commentsuserlist',
'/userlistings' => 'userads/main/index',
'/userlistings/create' => 'userads/main/create',
'/userlistings/edit' => 'userads/main/update',
'/userlistings/delete' => 'userads/main/delete',
'/userlistings/savecoords' => 'userads/main/savecoords',
'/userlistings/activate' => 'userads/main/activate',
'/userlistings/clone' => 'userads/main/clone',
'/users/view' => '/users/main/view',
'/users/viewall' => 'users/main/search',
'/users/alllistings' => 'apartments/main/alllistings',
'/apartments/sendEmail' => 'apartments/main/sendEmail',
'/apartments/viewDetailsViewsStats' => 'apartments/main/viewDetailsViewsStats',
'/mailbox' => 'messages/main/index',
'/mailbox/send' => 'messages/main/sendform',
'/mailbox/read' => 'messages/main/read',
'/mailbox/delete' => 'messages/main/delete',
'/mailbox/deleteMessage' => 'messages/main/deleteMessage',
'/messages/downloadFile' => 'messages/main/downloadFile',
'/service-<serviceId:\d+>' => 'quicksearch/main/mainsearch',
'/property/downloadDocument' => 'apartments/main/downloadDocument',
'/property/renameDocument' => 'apartments/main/renameDocument',
'/property/deleteDocument' => 'apartments/main/deleteDocument',
'/property/<id:\d+>' => 'apartments/main/view',
'/property/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'apartments/main/view',
'/<controller:(quicksearch|specialoffers)>/main/index' => '<controller>/main/index',
'/<_m>/<_c>/<_a>*' => '<_m>/<_c>/<_a>',
'/<_c>/<_a>*' => '<_c>/<_a>',
'/<_c>' => '<_c>',
);
Código Modificado: Modificación de todos los elementos que empiezan con /property y que apuntan a apartments/main, estableciendo como prefijo /venta. Adicionalmente, se incorpora cambio en los caracteres admitidos para que la url personalizada pueda contener slash en los módulos de apartments y también de entries:
/venta/<url:[-a-zA-Z0-9_+\/\.]{1,255}>
/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<url:[-a-zA-Z0-9_+\/\.]{1,255}>
Por supuesto, el caracter debe ser escapado (back slash, luego slash).
También debe modificarse la identificación de urls para las entradas de una categoría

$rulesLangTwo = array(
'/entries' => 'entries/main/index',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>' => 'entries/main/index',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<tag:[\w\s,]' => 'entries/main/index',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<id:\d+>' => 'entries/main/view',
'/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<url:[-a-zA-Z0-9_+\/\.]{1,255}>' => 'entries/main/view',
'/faq' => 'articles/main/index',
'/faq/<id:\d+>' => 'articles/main/view',
'/faq/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'articles/main/view',
'/contact-us' => 'contactform/main/index',
'/specialoffers' => 'specialoffers/main/index',
'/sitemap' => 'sitemap/main/index',
'/reviews' => 'reviews/main/index',
'/reviews/add' => 'reviews/main/add',
'/guestad/add' => 'guestad/main/create',
'/page/<id:\d+>' => 'infopages/main/view',
'/page/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'infopages/main/view',
'/search' => 'quicksearch/main/mainsearch',
'/comparisonList' => 'comparisonList/main/index',
'/complain/add' => 'apartmentsComplain/main/complain',
'/booking/add' => 'booking/main/bookingform',
'/booking/request' => 'booking/main/mainform',
'/usercpanel' => 'usercpanel/main/index',
'/usercpanel/data' => 'usercpanel/main/data',
'/usercpanel/changepwd' => 'usercpanel/main/changepassword',
'/usercpanel/tariffplans' => 'tariffPlans/main/index',
'/usercpanel/payments' => 'usercpanel/main/payments',
'/usercpanel/balance' => 'usercpanel/main/balance',
'/usercpanel/bookingtable' => 'bookingtable/main/index',
'/usercpanel/bookingtable/my' => 'bookingtable/main/my',
'/usercpanel/bookingtable/payforbooking' => 'paidservices/main/payForBooking',
'/usercpanel/comments' => 'comments/main/commentsuserlist',
'/userlistings' => 'userads/main/index',
'/userlistings/create' => 'userads/main/create',
'/userlistings/edit' => 'userads/main/update',
'/userlistings/delete' => 'userads/main/delete',
'/userlistings/savecoords' => 'userads/main/savecoords',
'/userlistings/activate' => 'userads/main/activate',
'/userlistings/clone' => 'userads/main/clone',
'/users/view' => '/users/main/view',
'/users/viewall' => 'users/main/search',
'/users/alllistings' => 'apartments/main/alllistings',
'/apartments/sendEmail' => 'apartments/main/sendEmail',
'/apartments/viewDetailsViewsStats' => 'apartments/main/viewDetailsViewsStats',
'/mailbox' => 'messages/main/index',
'/mailbox/send' => 'messages/main/sendform',
'/mailbox/read' => 'messages/main/read',
'/mailbox/delete' => 'messages/main/delete',
'/mailbox/deleteMessage' => 'messages/main/deleteMessage',
'/messages/downloadFile' => 'messages/main/downloadFile',
'/service-<serviceId:\d+>' => 'quicksearch/main/mainsearch',
'/venta/downloadDocument' => 'apartments/main/downloadDocument',
'/venta/renameDocument' => 'apartments/main/renameDocument',
'/venta/deleteDocument' => 'apartments/main/deleteDocument',
'/venta/<id:\d+>' => 'apartments/main/view',
'/venta/<url:[-a-zA-Z0-9_+\/\.]{1,255}>' => 'apartments/main/view',
'/<controller:(quicksearch|specialoffers)>/main/index' => '<controller>/main/index',
'/<_m>/<_c>/<_a>*' => '<_m>/<_c>/<_a>',
'/<_c>/<_a>*' => '<_c>/<_a>',
'/<_c>' => '<_c>',
);
Referencias:
https://forum.yiiframework.com/t/how-to-make-url-seo-friendly/66620/5
https://www.yiiframework.com/doc/guide/1.1/en/topics.url