如何为ReactJS和AngularJS配置Apache

时间:2020-01-09 10:39:00  来源:igfitidea点击:

如何配置Apache以使用JavaScript路由。

JavaScript 路由

在我们的前端应用程序中定义的路由仅对单页样式的应用程序可见。网络服务器无法理解它们。

Web服务器的默认行为,即通过文件系统提供物理文件和目录。使用单页应用程序,视图会根据访问的URI进行更改,但是文件始终是相同的-通常为index.html。

为了解决这个问题,我们需要配置Apache以将所有URI转发到index.html文件。我们可以通过在Apache配置文件或者vhost中创建URL重写规则来做到这一点。

启用Apache Rewrite Mod

为了执行URL重写,我们需要首先启用Apache模块。根据所使用的Linux发行版,有几种方法可以执行此操作。

CentOS 7

默认情况下,用于CentOS 7的基本Apache 2安装启用重写模块。无需其他工作。

Ubuntu 16.04

Ubuntu 16.04的基本Apache 2安装已精简。除了基本知识外,大多数模块未安装或者已禁用。 Rewrite模块已安装,因此我们只需要启用它即可。

sudo a2enmod rewrite

启用模块后,我们需要重新启动Apache 2才能使用它。运行以下命令以重新启动Apache。

sudo service apache2 restart

Ubuntu 18.04

减少了Ubuntu 18.04的基本Apache 2安装。除了基本知识外,大多数模块未安装或者已禁用。 Rewrite模块已安装,因此我们只需要启用它即可。

sudo a2enmod rewrite

启用模块后,我们需要重新启动Apache 2才能使用它。运行以下命令以重新启动Apache。

sudo systemctl reload apache2

添加重写规则

HTA访问

为应用程序启用URL重写的最简单方法是将.htaccess文件放入Web文档根目录-默认情况下位于/ var / www / html下。

  • 在Web目录根目录内,创建一个新的.htaccess文件。
  • 添加以下行。
RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
  • 保存更改。

Apache配置文件

重写也可以写入网站的配置文件中。配置文件的位置取决于几个因素-我们正在运行哪个Linux发行版以及是否正在使用自定义vhost文件。

的Ubuntu

Ubuntu上托管的网站的默认配置文件是/ etc / apache2 / sites-available / default。如果我们有一个自定义的虚拟主机或者站点文件,它将位于同一目录中,但名称不同。

CentOS的

CentOS上托管的站点的默认配置文件是/etc/https/conf/httpd.conf。如果我们使用的是VHost,则通常托管在/etc/https/conf.d下。

  • 在文本编辑器中打开站点的Apache配置文件。
  • 为文档根目录查找Directory指令。默认值为/ var / www / html。我们应该看到类似于以下内容。
...
  • 添加以下行。
RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
  • 保存更改并退出文本编辑器。
  • 测试配置,以确保没有语法错误。
  • 应用设置。

重新加载Apache之后,打开一个新的Web浏览器窗口并测试路由。如果所有配置正确,则我们应该可以访问前端应用程序的不同页面。