Spring boot:配置tomcat服务器以使用html5Mode

Igo*_*man 9 apache .htaccess spring spring-boot

问题:如何在spring boot中配置.htaccess?

angularjs提供html5Mode,这使您的应用程序使用基于pushstate的URL而不是hashtags.但是,这需要服务器端支持,因为生成的URL也需要正确呈现.

如果您在Apache服务器上运行角度应用程序,则可以在.htaccess文件中轻松添加此规则.

# Apache .htaccess

# angularjs pushstate (history) support:
# See http://www.josscrowcroft.com/2012/code/htaccess-for-html5-history-pushstate-url-routing/
<ifModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !index
    RewriteCond %{REQUEST_URI} !.*\.(css¦js|html|png) #Add extra extensions needed.
    RewriteRule (.*) index.html [L]
</ifModule>
Run Code Online (Sandbox Code Playgroud)

小智 3

Spring Boot 通常用于使用 Java 创建 RESTful Web 服务或 Web 应用程序。与使用 PHP 等技术的传统 Web 开发不同,Apache 和 .htaccess 文件在 Spring Boot 中并不常用。

但是,如果您仍然想在 Spring Boot 中使用 .htaccess,您可以通过执行以下步骤来配置它:

在 Spring Boot 应用程序的 src/main/resources 文件夹中创建一个 .htaccess 文件。

将配置规则添加到要应用于应用程序的 .htaccess 文件。例如,如果要将所有 HTTP 请求重定向到 HTTPS,可以使用以下规则:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

将以下依赖项添加到您的 pom.xml 文件中:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>9.0.43</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

将以下配置添加到您的 application.properties 文件中:

server.tomcat.internal-proxies=.*
Run Code Online (Sandbox Code Playgroud)

此配置告诉 Tomcat 将来自 localhost 的请求视为内部请求,从而允许处理 .htaccess 文件。

请注意,不建议将 .htaccess 与 Spring Boot 一起使用,因为它会影响性能,并且不是 Spring Boot 开发中的标准做法。最好使用 Spring Boot 的内置安全功能和配置选项来处理 Web 请求。