In web applications, a rewrite engine is a software component that performs
rewriting on
URLs
A Uniform Resource Locator (URL), colloquially termed as a web address, is a reference to a web resource that specifies its location on a computer network and a mechanism for retrieving it. A URL is a specific type of Uniform Resource Identifi ...
(Uniform Resource Locators), modifying their appearance. This modification is called URL rewriting. It is a way of implementing
URL mapping
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build an ...
or routing within a
web application
A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection.
History
In earlier computing models like client-serv ...
. The engine is typically a component of a
web server or
web application framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build an ...
. Rewritten URLs (sometimes known as short, pretty or fancy URLs, search engine friendly - SEF URLs, or
slugs) are used to provide shorter and more relevant-looking links to web pages. The technique adds a layer of
abstraction between the files used to generate a web page and the URL that is presented to the outside world.
Usage
Web sites with
dynamic content
A server-side dynamic web page is a web page whose construction is controlled by an application server processing server-side scripts. In server-side scripting, parameters determine how the assembly of every new web page proceeds, and includin ...
can use URLs that generate pages from the server using
query string
A query string is a part of a uniform resource locator (URL) that assigns values to specified parameters. A query string commonly includes fields added to a base URL by a Web browser or other client application, for example as part of an HTML, cho ...
parameters. These are often rewritten to resemble URLs for
static pages on a site with a
subdirectory hierarchy. For example, the URL to a
wiki
A wiki ( ) is an online hypertext publication collaboratively edited and managed by its own audience, using a web browser. A typical wiki contains multiple pages for the subjects or scope of the project, and could be either open to the pub ...
page might be:
http://example.com/w/index.php?title=Page_title
but can be rewritten as:
http://example.com/wiki/Page_title
A
blog
A blog (a truncation of "weblog") is a discussion or informational website published on the World Wide Web consisting of discrete, often informal diary-style text entries (posts). Posts are typically displayed in reverse chronological order s ...
might have a URL that encodes the dates of each entry:
http://www.example.com/Blog/Posts.php?Year=2006&Month=12&Day=19
It can be altered like this:
http://www.example.com/Blog/2006/12/19/
which also allows the user to change the URL to see all postings available in December, simply by removing the text encoding the day '19', as though navigating "up" a directory:
http://www.example.com/Blog/2006/12/
A site can pass specialized terms from the URL to its
search engine as a search term. This would allow users to search directly from their browser. For example, the URL as entered into the browser's
location bar:
http://example.com/search term
Will be
urlencoded by the browser before it makes the
HTTP request
The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, w ...
. The server could rewrite this to:
http://example.com/search.php?q=search%20term
Benefits and drawbacks
There are several benefits to using URL rewriting:
[Many of these only apply to HTTP servers whose default behavior is to map URLs to ]filesystem
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is Computer data storage, stored and retrieved. Without a file system, data placed in a storage me ...
entities (i.e. files and directories); certain environments, such as many HTTP application server platforms, make this irrelevant.
* The links are "cleaner" and more descriptive, improving their "friendliness" to both
users
Ancient Egyptian roles
* User (ancient Egyptian official), an ancient Egyptian nomarch (governor) of the Eighth Dynasty
* Useramen, an ancient Egyptian vizier also called "User"
Other uses
* User (computing)
A user is a person who ...
and
search engines
A search engine is a software system designed to carry out web searches. They search the World Wide Web in a systematic way for particular information specified in a textual web search query. The search results are generally presented in a ...
.
* They prevent undesired "
inline linking
Inline linking (also known as hotlinking, leeching, piggy-backing, direct linking, offsite image grabs) is the use of a linked object, often an image, on one site by a web page belonging to a second site. One site is said to have an inline li ...
", which can waste
bandwidth
Bandwidth commonly refers to:
* Bandwidth (signal processing) or ''analog bandwidth'', ''frequency bandwidth'', or ''radio bandwidth'', a measure of the width of a frequency range
* Bandwidth (computing), the rate of data transfer, bit rate or thr ...
.
* The site can continue to use the same URLs even if the underlying technology used to serve them is changed (for example, switching to a new
blogging engine).
There can, however be drawbacks as well; if a user wants to modify a URL to retrieve new data, URL rewriting may hinder the construction of custom queries due to the lack of named variables. For example, it may be difficult to determine the date from the following format:
http://www.example.com/Blog/06/04/02/
In this case, the original query string was more useful, since the query variables indicated month and day:
http://www.example.com/Blog/Posts.php?Year=06&Month=04&Day=02
Web frameworks
Many web frameworks include URL rewriting, either directly or through extension modules.
*
Apache HTTP Server has URL rewriting provided by the mod_rewrite module.
* URL Rewrite is available as an extension to
Microsoft IIS
Internet Information Services (IIS-pronounced 2S, formerly Internet Information Server) is an extensible web server software created by Microsoft for use with the Windows NT family. IIS supports HTTP, HTTP/2, HTTPS, FTP, FTPS, SMTP and NNTP. ...
.
*
Ruby on Rails
Ruby on Rails (simplified as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and we ...
has built-in URL rewriting via Routes.
*
Jakarta Servlet
A Jakarta Servlet (formerly Java Servlet) is a Java software component that extends the capabilities of a server. Although servlets can respond to many types of requests, they most commonly implement web containers for hosting web application ...
has extendable URL rewriting via the OCPsoft URLRewriteFilter and Tuckey UrlRewriteFilter.
*
Jakarta Server Faces
Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications and was formalized as a standard through the Java Community Process being part of t ...
has simplified URL rewriting via the PrettyFaces: URLRewriteFilter.
*
Django uses a
regular-expressions-based system. This is not strictly URL rewriting since there is no script to 'rewrite' to, nor even a directory structure; but it provides the full flexibility of URL rewriting.
*
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
Stripes Framework has had integrated functionality since version 1.5.
* Many Perl frameworks, such as
Mojolicious
Mojolicious is a real-time web application framework, written by Sebastian Riedel, creator of the web application framework Catalyst. Licensed as free software under the Artistic License v 2.0, it is written in the Perl programming language, and is ...
and
Catalyst
Catalysis () is the process of increasing the rate of a chemical reaction by adding a substance known as a catalyst (). Catalysts are not consumed in the reaction and remain unchanged after it. If the reaction is rapid and the catalyst recyc ...
, have this feature.
*
CodeIgniter
CodeIgniter is an open-source software rapid development web framework, for use in building dynamic web sites with PHP.
Popularity
CodeIgniter is loosely based on the popular model–view–controller (MVC) development pattern. While controller ...
has URL rewriting provided.
*
lighttpd
lighttpd (pronounced "lighty") is an open-source web server optimized for speed-critical environments while remaining standards-compliant, secure and flexible. It was originally written by Jan Kneschke as a proof-of-concept of the c10k problem â ...
has a mod_rewrite module.
*
nginx
Nginx (pronounced "engine x" ) is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and publicly released in 2004. Nginx is free and open-source software ...
has a rewrite module. For example, a multi-link multi-variable page generation from a
URI Uri may refer to:
Places
* Canton of Uri, a canton in Switzerland
* Úri, a village and commune in Hungary
* Uri, Iran, a village in East Azerbaijan Province
* Uri, Jammu and Kashmir, a town in India
* Uri (island), an island off Malakula Islan ...
lik
is possible, where multiple individual parts like get expanded with the help of
regular expression
A regular expression (shortened as regex or regexp; sometimes referred to as rational expression) is a sequence of characters that specifies a search pattern in text. Usually such patterns are used by string-searching algorithms for "find" ...
s into variables to signify and so forth.
*
Hiawatha HTTP server has a URL Toolkit which supports URL rewriting.
*
Cherokee HTTP server supports regular expressions of URL rewriting and redirections.
From a
software development perspective, URL rewriting can aid in code modularization and
control flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an ''im ...
,
making it a useful feature of modern web frameworks.
See also
*
Application Delivery Controller
An application delivery controller (ADC) is a computer network device in a datacenter, often part of an application delivery network (ADN), that helps perform common tasks, such as those done by web accelerators to remove load from the web servers ...
*
aiScaler Traffic Manager
*
.htaccess
*
Apache HTTP Server
*
Content negotiation
*
HTTP
The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide We ...
*
Internet Information Server
Internet Information Services (IIS-pronounced 2S, formerly Internet Information Server) is an extensible web server software created by Microsoft for use with the Windows NT family. IIS supports HTTP, HTTP/2, HTTPS, FTP, FTPS, SMTP and NNTP. ...
*
Permalink
A permalink or permanent link is a URL that is intended to remain unchanged for many years into the future, yielding a hyperlink that is less susceptible to link rot. Permalinks are often rendered simply, that is, as clean URLs, to be easier to ...
*
Zeus Web Server
Zeus Web Server is a discontinued proprietary high-performance web server for Unix and Unix-like platforms (including Solaris, FreeBSD, HP-UX and Linux). It was developed by Zeus Technology, a software company located in Cambridge, England that ...
Notes
External links
Apache mod_rewriteFull list of CGI variables and values for constructing rewrites.
{{DEFAULTSORT:Rewrite Engine
URL