我有两个网站,
http://localhost/bb
--phpbb
http://localhost/dp
-- Drupal
我希望重定向$server_name/bb/ucp.php?mode=logout&sid=xxxxx
到$server_name/dp/user/logout
,sid 应该被忽略。
我尝试过这个:
location /bb/
{
index index.php;
if ($query_string ~* "mode=logout$")
{
rewrite ^/bb/ucp\.php http://$server_name/dp/user/logout redirect;
}
}
似乎不起作用。有人能帮忙吗?谢谢。
我也尝试过这个:
location /bb/
{
index index.php;
if ($arg_mode ~* "logout") ## and = instead of ~* too.
{
rewrite ^/bb/ucp\.php http://$server_name/dp/user/logout redirect;
}
}
但它也不起作用。
当前整体配置:
server {
listen 80;
server_name localhost;
add_header X-Frame-Options "SAMEORIGIN";
client_max_body_size 500M;
root /var/www;
location / {
index index.html index.htm index.php;
try_files $uri @rewrite;
}
location /bb/
{
index index.php;
if ($arg_mode = "logout")
{
rewrite ^/bb/ucp\.php http://$server_name/dp/user/logout redirect;
}
}
location @rewrite {
# needed by Drupal
rewrite ^/([^/]*)/(.*)(/?)$ /$1/index.php?q=$2&$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
(未按预期工作)
答案1
您应该直接检查参数值。
if ($arg_mode = "logout") {
答案2
您可以使用直接参数检查:
if ($arg_mode = "logout")
{
rewrite ^/bb/ucp\.php http://$server_name/dp/user/logout redirect;
}
但是您的方法似乎也是合法的,除了一个错误的正则表达式。您$
在末尾有一个符号,表示行尾,而在您的示例中,它$server_name/bb/ucp.php?mode=logout&sid=xxxxx
肯定logout
不在行尾。