Among the major aspects observed by search engines to determine the relevance of a particular page to a specific search term is that whether the URL link itself embraces a certain word or not. The instant ability to define your URLs in a more human readable, SEO friendly format and to remap old URLs to novel functionality is the key reason for organizations to adopt for URL routing.
Entre los principales aspectos observados en los motores de búsqueda para determinar la relevancia de una página en particular a un término de búsqueda en específico es que si el enlace URL en sí, abarca una determinada palabra o no. La capacidad instantánea para definir sus URLs es en una manera leíble más humana, SEO formato amigable y el re mapeo de antiguas URLs a nueva funcionalidad es la razón clave para que organizaciones adopten el enrutamiento URL.
What is URL Routing?
URL Routing is a mechanism used to map URLs to the code that gets executed only when a certain request is received at the server.
Why you need URL Routing?
URL Routing makes your URLs considerably more meaningful. Suppose, you have a page that searches for books based on the author’s name. It may appear like this:
[code java ]index.php?action=search&type=book&author=fitzgerald[/code]
Such type of URLs are difficult to understand and remember for the user. Therefore, to make these URLs more user friendly, you use ‘URL Routing’ and transform these URLs into simpler format.
[code java] /search/book/ftizgerald[/code]
Another great advantage of URL routing is found in Search Engine Optimization and there is no denying to the fact that strong SEO can enhance the positioning of your website and eventually profitability.
How to implement URL Routing in PHP?
The following guide will help you in implementing URL routing in PHP and Apache.
- First of all, make sure you have installed and enabled rewrite module in Apache’s configuration
- Now, we have to create a .htaccess file in root directory of our website
- For every page request, index.php will be executed. In order to distinguish between the different requests, you will have to use $_SERVER[‘REQUEST_URI’]
- Next, simply explode $_SERVER[‘REQUEST_URI’] with ‘/’ and you will get the substrings that will help you to compare and execute the code corresponding to them.
[code java]
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L] [/code]
* Check, if the mod_rewrite has been enabled or not. If yes, then the following configuration will be used.
* ‘RewriteEngine On’ enables the rewrite engine. Next, we will handle all the requests that do not correspond to the file names. After that, we will pass the requests to index.php file. Now, index.php will manage all the requests.
The Real Code
[code java] /*
The following function will strip the script name from URL
i.e. http://www.something.com/search/book/fitzgerald will become /search/book/fitzgerald
*/
function getCurrentUri()
{
$basepath = implode('/', array_slice(explode('/', $_SERVER['SCRIPT_NAME']), 0, -1)) . '/';
$uri = substr($_SERVER['REQUEST_URI'], strlen($basepath));
if (strstr($uri, '?')) $uri = substr($uri, 0, strpos($uri, '?'));
$uri = '/' . trim($uri, '/');
return $uri;
}
$base_url = getCurrentUri();
$routes = array();
$routes = explode('/', $base_url);
foreach($routes as $route)
{
if(trim($route) != '')
array_push($routes, $route);
}
/*
Now, $routes will contain all the routes. $routes[0] will correspond to first route.
For e.g. in above example $routes[0] is search, $routes[1] is book and $routes[2] is fitzgerald
*/
if($routes[0] == “search”)
{
if($routes[1] == “book”)
{
searchBooksBy($routes[2]);
}
}[/code]
Conclusion
This is how you will be able to implement minimal URL routing mechanism. There are a plenty of PHP frameworks that provide enhanced URL Routing features and you can try them as well. Follow this tutorial to quickly implement web push notifications in your website, the benefits and features of which can be found here.
If you have any queries or require further assistance, please feel free to reach us at support@shephertz.com
¿Qué es el Enrutamiento URL?
Enrutamiento URL es un mecanismo usado para mapear URLS al código que se ejecuta solamente cuando cierta solicitud es recibida en el servidor.
¿Por qué necesita Enrutamiento URL?
Enrutamiento URL hace de sus URLs considerablemente más significativos. Supongamos, tiene una página que busca libros por nombre de autor. Podría verse así:
index.php?action=search&type=book&author=fitzgerald
Tales tipos de URLs son difíciles de entender y recordar por los usuarios. Por lo tanto, para hacer estos URLs más amigables para los usuarios, usted usa “URL Routing” y transforma estos URLs a un formato simple.
/search/book/ftizgerald
Otra gran ventaja de enrutamiento URL se encuentra en Search Engine Optimization y no se puede negar el hecho que una SEO fuerte pueda mejorar el posicionamiento de su sitio web y eventualmente la rentabilidad.
¿Cómo implementar Enrutamiento URL en PHP?
La siguiente guía le ayudara a implementar enrutamiento URL en PHP y Apache
- Primero que todo, asegúrese de haber instalado y activado el módulo de reescritura en la configuración de Apache.
- Ahora, debemos crear un archivo .htaccess en el directorio de origen de nuestro sitio web
Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L]
*Revise, si mod_rewrite ha sido activado o no. Si está activado entonces la siguiente configuración será usada.
* ‘RewriteEngine On’ activa el motor de rescritura. Lo siguiente, vamos a gestionar todas las solicitudes que no corresponden a los nombres de los archivos. Después de esto, pasaremos las solicitudes al archivo index.php. Ahora, index.php gestionara todas las solicitudes. - Por cada solicitud de página, index.php se ejecutará. Con el fin de distinguir entre las diferentes solicitudes, tendrá que usar $_SERVER[‘REQUEST_URI’]
- A continuación, simplemente explode $_SERVER[‘REQUEST_URI’] con ‘/’ y obtendrá las subsecuencias que le ayudaran a comparar y ejecutar el código correspondiente a ello.
El Código Real
/*
The following function will strip the script name from URL i.e. http://www.something.com/search/book/fitzgerald will become /search/book/fitzgerald
*/
function getCurrentUri()
{
$basepath = implode('/', array_slice(explode('/', $_SERVER['SCRIPT_NAME']), 0, -1)) . '/';
$uri = substr($_SERVER['REQUEST_URI'], strlen($basepath));
if (strstr($uri, '?')) $uri = substr($uri, 0, strpos($uri, '?'));
$uri = '/' . trim($uri, '/');
return $uri;
}
$base_url = getCurrentUri();
$routes = array();
$routes = explode('/', $base_url);
foreach($routes as $route)
{
if(trim($route) != '')
array_push($routes, $route);
}
/*
Now, $routes will contain all the routes. $routes[0] will correspond to first route. For e.g. in above example $routes[0] is search, $routes[1] is book and $routes[2] is fitzgerald
*/
if($routes[0] == “search”)
{
if($routes[1] == “book”)
{
searchBooksBy($routes[2]);
}
}
Conclusión
Esta es la manera de cómo implementar mínimos mecanismos de Enrutamiento URL. Hay muchos marcos PHP que proporcionan características mejoradas de Enrutamiento URL que también puede probar.
Si tiene alguna pregunta o requiere de asistencia, por favor contáctenos a support@shephertz.com
2 Comments
While not in the example, if you go on to include a file based on this array, be careful of “/../../../../hidden-file/”.
A normal web browser (e.g. Firefox/Chome) will automatically remove those, but a bot or some system that is able to directly query the server directly, can escape the document root and potentially gain access to private files.
Thanks for sharing.