【发布时间】:2023-03-11 18:04:01
【问题描述】:
我一直在研究使用RewriteMap 来动态处理一系列 URL 重写,而我想做的是使用 PHP 脚本来生成适当的重写条件和规则——但我只能'让它工作。
我已经在带有 WebHost Manager 和 cPanel 的 Linux 服务器上运行 Apache。
我将以下内容添加到 WHM > Apache Configuration > Include Editor > PreVirtual Host Include > All Versions:
RewriteMap myrules "prg:/usr/lib/php /path/to/my/script.php"
我更新了配置文件,Apache 重启正常。
现在我想调用我从 .htaccess 文件中定义的 RewriteMap 来执行重写,但这就是我卡住的地方,一切似乎都坏了。
我想获取传入的域,对照地图检查它,然后返回关联的 domain:user_name 值。比如:
RewriteCond %{HTTP_HOST} ^(www\.)?${myrules:%{HTTP_HOST}}\.com$ [NC]
RewriteRule ^(.*)$ http://mywebsite.com/user/${myrules:%{HTTP_HOST}}/$1 [NC,P,L]
因此,举例来说,如果我的地图有 johnsmith.com:john-smith,那么传入 URL johnsmith.com 将代理 mywebsite.com/user/john-smith/ 上的内容。
首先,我很确定上面的条件/规则都是错误的。
把它弄对是我的首要任务。
其次,如何使用 RewriteMap 定义的 PHP 脚本输出我的地图?
任何帮助将不胜感激!
【问题讨论】:
-
不要这样做。你有prg:例如here,但先阅读cmets :)
-
HTTP_HOST是您的服务器的主机名,而不是客户端的名称。有一些REMOTE_*变量,但我不确定这些值的可靠性。 -
请参阅prg: External Rewriting Program 以获取有关 Perl 小示例的说明。
-
@dusan.bajic 那里的 cmets 似乎建议进行重定向。不幸的是,我不能只是重定向,我需要代理。
标签: php apache .htaccess mod-rewrite url-rewriting