子域重写规则在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] 

帮帮我?

replacestring需要调整以使用RewriteCond的捕获,以及是否需要前导斜杠取决于此RewriteRule的configuration位置 – 具有这种方式意味着它需要位于<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]