如何在 Ubuntu 18.04 VPS 或专用服务器上启用 Apache Mod_Rewrite
Mod_rewrite
是一个强大的 Apache 模块,提供 URL 操作能力。 复杂的功能允许网站管理员重写 URL,这是许多内容管理系统编码(如 WordPress)中的常见做法。
Mod_rewrite
以翻译动态网站中人类可读的 URL 而闻名。 这使得 URL 在网站中看起来更干净、更友好。
在本篇文章中,我们将介绍在 Ubuntu 18.04 VPS 上运行的 Apache 服务器上启用 mod_rewrite
的步骤。
先决条件
- Ubuntu 18.04 VPS
- 具有 sudo 权限的非 root 用户
- Apache
步骤1: 启用 mod_rewrite
我们可以使用 a2enmod
命令启用任何 Apache 模块。 因此,在 Ubuntu 18.04 服务器上运行以下命令:
$ sudo a2enmod rewrite
如果该模块已在我们服务器上启用,我们将收到一条警告消息。
对其配置进行任何更改后,我们必须重新启动 Apache。 为此,请在终端窗口中键入以下命令:
$ sudo systemctl restart apache2
我们的服务器现在已准备好接受重写规则。
步骤2:设置服务器以接受 .htaccess 文件
我们可以直接在 Apache 的配置文件中设置 URL 重写规则。 但是,建议将规则保存在每个网站的 .htaccess
文件中。 大多数内容管理系统都依赖于 .htaccess
文件,它是在安装应用程序后默认创建的。
默认情况下,Apache 不允许使用 .htaccess
文件,因此我们需要通过添加以下代码来编辑每个网站的虚拟主机文件的配置:
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
例如,我们可以使用 nano 编辑器编辑 Apache 附带的默认虚拟主机,方法是键入以下命令:
$ sudo nano /etc/apache2/sites-available/000-default.conf
然后将上面的文本复制粘贴到 </VirtualHost>
结束标记之前。 请记住按 CTRL + X 保存文件,然后按 Y 和 Enter
然后,重新启动 Apache 以使更改生效:
$ sudo systemctl restart apache2
步骤3:Mod-rewrite 语法
基本的 Apache mod_rewrite 语法包含以下部分:
RewriteRule
模式替换 [标志]
- RewriteRule - 我们规则的指令。
- Pattern - 这是一个正则表达式(Regular Expression),匹配用户在浏览器中输入的内容。
- Substitution - Apache 服务器应调用的实际 URL 路径。
- Flag - 修改规则如何工作的可选参数。
步骤4:创建示例 .htaccess 文件
我们现在将在默认网站的根目录下创建一个示例 .htaccess 文件来测试 mod_rewrite
。 为此,请键入以下命令
$ sudo nano /var/www/html/.htaccess
每个 mod_rewrite 规则都必须带有命令 RewriteEngine on
。 所以你需要在文件的顶部输入这个。
RewriteEngine on
接下来,我们将重写一条规则,如果用户请求 URL http://wwwjiyik.com/contact_us
,则将用户重定向到“contact_us.html”页面
所以我们添加以下规则:
RewriteRule ^contact_us$ contact_us.html [NC]
在上面的规则中,“contact_us”是应该匹配并重定向到我们的替换路径“contact_us.html”的模式。 命令 [NC]
是一个标志,告诉 Apache 使规则不区分大小写。 ^
表示我们正在匹配服务器公网IP地址或域名之后的任何文本,而 $
表示我们正在匹配的URL结尾。
所以我们完整的“**.htaccess** ”文件应该类似于下面的文本:
RewriteEngine on
RewriteRule ^contact_us$ contact_us.html [NC]
按 CTRL+ X、Y 和 Enter 保存文件。
接下来键入以下命令以创建 contact_us.html 页面:
$ sudo nano /var/www/html/contact_us.html
然后,将下面的 HTML 文本粘贴到文件中:
<html>
<head>
<title>Contact our website</title>
</head>
<body>
<h1>This is a contact us page</h1>
</body>
</html>
按 CTRL+ X、Y 和 Enter 保存文件。
现在,如果我们在浏览器上访问路径 http://wwwjiyik.com/contact_us
,Apache 应该提供我们创建的页面“contact_us.html”,如下所示:
相关文章
在 Apache2 中启用 PHP
发布时间:2023/03/27 浏览次数:149 分类:PHP
-
本文将教你如何使用 a2enmod、LoadModule 和符号链接在 Apache2 中启用 PHP。如果你遇到有关 PHP 的模块错误,我们将教你如何通过 apt-get 修复它。
在 Ubuntu 和 Debian 上配置 Apache Web 服务器
发布时间:2023/03/17 浏览次数:143 分类:操作系统
-
本教程展示了在 Ubuntu 和 Debian 上安装和设置 apache 网络服务器以及使用访问日志。
在同一台服务器上运行 Node Js 和 Apache
发布时间:2023/03/12 浏览次数:200 分类:Node.js
-
本教程演示了如何在同一台服务器上运行 Node JS 和 Apache。
Apache 的 AllowOverride All 并不像你想象的那样
发布时间:2023/01/06 浏览次数:88 分类:网络
-
我只需要为一个学校项目设置一个 Apache 服务器。 因为我喜欢使用 .htaccess 文件来设置重写规则并摆弄一些其他选项,所以除了标准批处理之外还必须加载一些额外的模块。 使用 phpin
从URL中移除 www.
发布时间:2023/01/06 浏览次数:155 分类:学无止境
-
如果你讨厌网站 URL 中的 www. 部分(就像我大约两个月前开始做的那样),你应该让其他人包括搜索引擎知道这一点。 这只是将通过 www. 访问的每个页面重定向到与其相等的 非www 的
php zookeeper常见问题解决方案
发布时间:2017/03/13 浏览次数:911 分类:PHP
-
本章承接上一章提出的php-zookeeper的问题以及原因来继续提出解决方案,一是修改php-zookeeper源码,再就是修改php代码。
php zookeeper你需要知道的细节
发布时间:2017/03/12 浏览次数:3599 分类:PHP
-
本章介绍如何在php中集成zookeeper,使用PHP-Zookeeper扩展插件。同时通过分析PHP-Zookeeper源码来了解其存在的一些问题,各位在使用过程中尽量避免相似问题。
Windows7下Apache2.4+PHP5.6环境配置
发布时间:2016/10/25 浏览次数:972 分类:操作系统
-
Apache2.4+PHP5.6的配置和其他版本的配置步骤是相同的。但是这里有一点需要注意的地方就是依赖组件版本的兼容。本篇主要就是对这个问题进行一个介绍说明。
Windows7下Apache2.4安装及注意事项
发布时间:2016/10/24 浏览次数:2446 分类:操作系统
-
windows7下面安装apache2.4,其过程和其他版本的apache不同。本篇就2.4版本在windows7下面编译安装以及注意事项做一个介绍。