如果在使用Apache RewriteRule时重定向后无法保存URL,可能是由于重写规则导致URL丢失或更改。解决此问题的方法之一是使用RewriteCond来检查URL是否已被重写,并将原始URL保存在一个环境变量中。然后可以在重定向后使用该环境变量来还原URL。
下面是一个示例代码,演示了如何解决此问题:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/redirected-url
RewriteRule ^(.*)$ /redirected-url/$1 [L,NE,R=301,E=ORIGINAL_URL:$1]
# 现在使用环境变量 ORIGINAL_URL 进行处理
在上述示例中,我们使用了一个RewriteCond来检查请求的URI是否已经重写为“/redirected-url”。如果URI不是重定向的URL,则执行重定向,并将原始URL保存在名为“ORIGINAL_URL”的环境变量中。
然后,您可以在重定向后的其他位置使用该环境变量来还原原始URL。例如,您可以在PHP中使用以下代码来获取原始URL:
$originalUrl = $_SERVER['REDIRECT_ORIGINAL_URL'];
请注意,上述示例可能需要根据您的具体需求进行修改和适应。