apache 上的子域名重写规则(从 nginx 转换而来)

apache 上的子域名重写规则(从 nginx 转换而来)

我的一个朋友正在移动主机,我负责整理他的重写规则。除了这个尴尬的子域名重写规则外,我已经完成了大部分工作:

server {
listen   80;
server_name  ~^(?<subdomain>.+)\.foo\.gg$;

location / {
if (!-e $request_filename) {
    rewrite  ^/([-a-zA-Z0-9]+)-$  /stats.php?code=$1&sub=$subdomain  last;
    rewrite  ^/([-a-zA-Z0-9]+)$  /redirect.php?code=$1&sub=$subdomain  last;
    break;
}
}
}

我已经尝试过这个(来自另一个 serverfault 线程,但对我来说不起作用:

RewriteCond %{HTTP_HOST} ^([^.]+)\.foo\.gg$

RewriteRule ^([A-Za-z0-9-]+)$ redirect.php?code=$1&sub=$2 [L]

帮助?

答案1

需要调整替换字符串以使用来自的捕获RewriteCond,并且是否需要前导斜杠取决于RewriteRule配置的位置 - 您拥有它的方式意味着它需要位于<Directory>文档根目录的块中,或者.htaccess那里的文件中。

RewriteRule ^([A-Za-z0-9-]+)$ redirect.php?code=$1&sub=%1 [L]

如果它在你的,<VirtualHost>那么保留前导斜杠。

RewriteRule ^/([A-Za-z0-9-]+)$ redirect.php?code=$1&sub=%1 [L]

相关内容