如何在ubuntu DigitalOcean上配置Apache2以正确重定向除一条路径外的所有路径
我正在尝试在运行DigitalOcean droplet的Ubunti操作系统上设置Apache2,以便:如何在ubuntu DigitalOcean上配置Apache2以正确重定向除一条路径外的所有路径,ubuntu,redirect,mod-rewrite,apache2,Ubuntu,Redirect,Mod Rewrite,Apache2,我正在尝试在运行DigitalOcean droplet的Ubunti操作系统上设置Apache2,以便: 如果路径具有此模式:https://example.com/api,继续请求。无需重定向 对于所有其他路径,重定向到https://web.example.com 在这两种情况下,都需要保留request/post/headers/其他参数 我目前有这个,但它不工作 <IfModule mod_ssl.c> <VirtualHost *:443> S
https://example.com/api
,继续请求。无需重定向https://web.example.com
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLProxyEngine on
DocumentRoot /var/www/example/public
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/api$
RewriteRule ^(.*)$ https://web.example.com/$1 [R=301,L]
#SSL certificate stuff here
</VirtualHost>
</IfModule>
ServerName example.com
ServerAlias www.example.com
SSLProxyEngine打开
DocumentRoot/var/www/example/public
重新启动发动机
重写cond%{REQUEST_URI}^/原料药$
重写规则^(.*)$https://web.example.com/$1[R=301,L]
#SSL证书的东西在这里
你没有明确说明这是什么或如何不起作用的。然而,这里有几个问题
容器中(与
块或.htaccess
相反),这将导致URL路径开始处出现双斜杠,因为URL路径与重写规则
模式匹配(您将完整捕获该模式)包括完整的根相对URL路径,以斜杠开头
RewriteRule !^/api https://web.example.com%{REQUEST_URI} [R=307,L]
不需要额外的RewriteCond
指令,因为在RewriteRule
指令本身中可以更容易(更有效)执行此检查(确认请求尚未以/api
开始)
默认情况下,通过重定向保留任何查询字符串
请注意,这目前是一个临时重定向。如果这是永久重定向,则只有在确认其正常工作后才更改为308,以避免潜在的缓存问题
如上所述,您需要在测试之前清除浏览器缓存
你没有明确说明这是什么或如何不起作用的。但是,这里有几个问题
容器中(与
块或.htaccess
相反),这将导致URL路径开始处出现双斜杠,因为URL路径与重写规则
模式匹配(您将完整捕获该模式)包括完整的根相对URL路径,以斜杠开头
RewriteRule !^/api https://web.example.com%{REQUEST_URI} [R=307,L]
不需要额外的RewriteCond
指令,因为在RewriteRule
指令本身中可以更容易(更有效)执行此检查(确认请求尚未以/api
开始)
默认情况下,通过重定向保留任何查询字符串
请注意,这目前是一个临时重定向。如果这是永久重定向,则只有在确认其正常工作后才更改为308,以避免潜在的缓存问题
如上所述,您需要在测试之前清除浏览器缓存