如何在lucee中实现urlrewrite
How to implement urlrewrite in lucee
我想在我的 lucee 应用程序中重写 url。我使用 url "http://localhost:8888/sampleApp/views/test.cfm" to display the view pages and I want it to display as "http://localhost:8888/sampleApp/test.cfm".
这不会在 Lucee 中实现,它会在网络服务器中完成,例如Apache、IIS、Nginx 等... Lucee 是一个 servlet 运行 在像 Tomcat 这样的应用服务器上,而不是 Web 服务器,不要将两者混为一谈。
如前所述,这取决于网络服务器,尤其是在生产环境中。但是,在某些情况下以及为了开发,您可能希望在没有前端网络服务器的情况下在您的 servlet 容器引擎中使用 urlrewrite。从您的 post 读取,您正在使用端口 8888,这让我假设您正在使用 Lucees 默认 servlet 容器 Tomcat。
从 Tomcat 8.0 开始可以使用 urlrewrite。但正如已经说过的,这仅建议用于开发或 Tomcat 作为独立的生产环境。如果您在 Tomcat 前面有另一个网络服务器,您可以让此设置保持不变,并且前面的网络服务器将进行 url 重写。对于单独使用 Tomcat 的工作解决方案,添加 RewriteValve 和一个包含 url 重写规则的 rewrite.config 文件,如下所示:
- 编辑 {path_to_lucee}/conf/server.xml 并将 RewriteValve 指令添加到 <主机名="localhost">。就是这样:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
...
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve"/>
...
</Host>
- 然后创建一个 rewrite.config 在
{path_to_lucee}/conf/Catalina/localhost/rewrite.config
您需要创建文件夹 Catalina 和 localhost 以防它们不存在。然后将以下简单 url 重写规则添加到 rewrite.config 文件:
RewriteCond %{SERVLET_PATH} !-f
RewriteRule ^\/sampleApp\/(.*)\.cfm(.*)$ sampleApp/views/.cfm [L,QSA]
- 重启Tomcat使新设置生效
您很可能需要调整此规则。更多更深入的信息,请查看:
Apache Tomcat 9 Rewrite Valve
您是否在 Windows 上使用 IIS?如果是这样,您只需要 URL Rewrite Module 2.0
安装它,使用重写规则设置 web.config
,就可以开始了。
您也可能不希望在您的网址中使用 .cfm
扩展名。我为此使用此规则:
<rule name="Rewrite .cfm" enabled="true" stopProcessing="false">
<match url="[^?]*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).png" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).cfm" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).cfc" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).jpg" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).gif" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).mp4" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).mp3" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).css" negate="true" />
</conditions>
<action type="Rewrite" url="{R:0}.cfm" />
</rule>
您应该为您的网站支持的所有文件类型添加更多条件,例如 .mkv
或 .js
我想在我的 lucee 应用程序中重写 url。我使用 url "http://localhost:8888/sampleApp/views/test.cfm" to display the view pages and I want it to display as "http://localhost:8888/sampleApp/test.cfm".
这不会在 Lucee 中实现,它会在网络服务器中完成,例如Apache、IIS、Nginx 等... Lucee 是一个 servlet 运行 在像 Tomcat 这样的应用服务器上,而不是 Web 服务器,不要将两者混为一谈。
如前所述,这取决于网络服务器,尤其是在生产环境中。但是,在某些情况下以及为了开发,您可能希望在没有前端网络服务器的情况下在您的 servlet 容器引擎中使用 urlrewrite。从您的 post 读取,您正在使用端口 8888,这让我假设您正在使用 Lucees 默认 servlet 容器 Tomcat。
从 Tomcat 8.0 开始可以使用 urlrewrite。但正如已经说过的,这仅建议用于开发或 Tomcat 作为独立的生产环境。如果您在 Tomcat 前面有另一个网络服务器,您可以让此设置保持不变,并且前面的网络服务器将进行 url 重写。对于单独使用 Tomcat 的工作解决方案,添加 RewriteValve 和一个包含 url 重写规则的 rewrite.config 文件,如下所示:
- 编辑 {path_to_lucee}/conf/server.xml 并将 RewriteValve 指令添加到 <主机名="localhost">。就是这样:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
...
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve"/>
...
</Host>
- 然后创建一个 rewrite.config 在 {path_to_lucee}/conf/Catalina/localhost/rewrite.config 您需要创建文件夹 Catalina 和 localhost 以防它们不存在。然后将以下简单 url 重写规则添加到 rewrite.config 文件:
RewriteCond %{SERVLET_PATH} !-f
RewriteRule ^\/sampleApp\/(.*)\.cfm(.*)$ sampleApp/views/.cfm [L,QSA]
- 重启Tomcat使新设置生效
您很可能需要调整此规则。更多更深入的信息,请查看: Apache Tomcat 9 Rewrite Valve
您是否在 Windows 上使用 IIS?如果是这样,您只需要 URL Rewrite Module 2.0
安装它,使用重写规则设置 web.config
,就可以开始了。
您也可能不希望在您的网址中使用 .cfm
扩展名。我为此使用此规则:
<rule name="Rewrite .cfm" enabled="true" stopProcessing="false">
<match url="[^?]*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).png" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).cfm" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).cfc" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).jpg" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).gif" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).mp4" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).mp3" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="^(.*).css" negate="true" />
</conditions>
<action type="Rewrite" url="{R:0}.cfm" />
</rule>
您应该为您的网站支持的所有文件类型添加更多条件,例如 .mkv
或 .js