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