У меня есть 2 веб-сайта,
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;
}
}
(Не работает как ожидалось),
Можно использовать прямую проверку аргументов:
if ($arg_mode = "logout")
{
rewrite ^/bb/ucp\.php http://$server_name/dp/user/logout redirect;
}
Но и ваш подход, похоже, легален, за исключением неправильного регэкспонирования. В конце имеется знак $
, означающий конец строки, в то время как в вашем примере $server_name/bb/ucp.php?mode=logout&side=xxxxx
, где logout
определенно не находится в конце строки.