apache2 重写正在运行,但没有保留 URL

apache2 重写正在运行,但没有保留 URL

我在 Google 上搜索了好几天,但还是无法让它工作。使用 apache 重写:domain.com > test.com/test(但在浏览器中保留 URL domain.com)

整个 SSL 配置:

<VirtualHost *:443>
        ServerName xxx
        ServerAlias domain.com test.com

        DocumentRoot /srv/www/test/htdocs

        LogLevel warn
        ErrorLog "/srv/www/test/logs/apache2-error-ssl.log"
        CustomLog "/srv/www/test/logs/apache2-access-ssl.log" combined

        <Directory /srv/www/test/htdocs>
                Options -Indexes +ExecCGI +FollowSymLinks -MultiViews
                AllowOverride AuthConfig FileInfo Indexes Limit Options=Indexes,MultiViews
                Require all granted
        </Directory>

        <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteCond "%{HTTP_HOST}" "^(www\.)?domain\.com$" [NC]
                RewriteRule ".*" "https://test.com/test" [L,NE,P]
        </IfModule>

        SSLEngine on
        SSLProxyEngine on

        <FilesMatch "\.php$">
                SSLOptions +StdEnvVars
        </FilesMatch>

        <IfModule mod_fcgid.c>
                SuexecUserGroup test test
                Alias /cgi-bin/ /srv/www/.fcgid/test/
        </IfModule>

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/xxx
SSLCertificateKeyFile /etc/letsencrypt/live/xxx
</VirtualHost>

mod_proxy(proxy 和 proxy_http)已激活,一切正常,重定向/重写也是如此,但它不会保留 URL。如果有人知道线索,我将不胜感激。apache 日志中没有任何内容。我错过了什么吗?

答案1

尝试反向代理

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_html
sudo a2enmod rewrite
sudo a2enmod deflate

在 apache 配置中添加以下几行

ServerName your-reverse-proxy-domain.com
ProxyPass / http://backend-server-url/
ProxyPassReverse / http://backend-server-url/

然后重新启动 apache 服务

答案2

您是否在 apache 中启用了重写模块?

运行给定的命令来启用重写模块。

“sudo a2enmod 重写”

答案3

按照这个做,它肯定会解决你的问题。

安装 nginx

sudo apt install nginx

在与 apache 相同的文档根目录下使用不同的端口(如 8080)运行它。

在 apache 配置中添加以下行。

    ServerName domain.com
    ProxyPass / http://test.com:8080/test/
    ProxyPassReverse / http://test.com:8080/test/

重新启动 apache 服务

相关内容