2015-11-25 2 views
1

Я только что развернул недавно созданный веб-сайт, на котором запущены Laravel 5 и nginx, и изо всех сил пытается настроить мою конфигурацию nginx на 301, перенаправить некоторые старые URL-адреса, в частности, с расширениями .php.Конфигурация Nginx/Laravel для перенаправления с маршрута non index.php

Я ищу 301 перенаправлять ниже ...

domain.com/foobar.php?id=123 -> domain.com/foobar/123 

по умолчанию конфигурации принимает все работает от index.php, так Laravel не срабатывает на foobar.php.

Я попытался добавить следующее правило перезаписи, но это не вызывает (я предполагаю, потому что Nginx не слушать для запросов foobar.php?

rewrite ^/foobar.php(.*)$ /foobar/$1/ permanent; 

Соответствующего фрагмента моей текущей Nginx конфигурации ниже ...

server { 
listen 443 ssl; 
server_name domain.com; 
root /home/domain.com/public; 

index index.html index.htm index.php; 

charset utf-8; 

if ($request_method = GET) { 
    rewrite ^([^.]*[^/])$ $1/ permanent; 
} 

location/{ 
    try_files $uri $uri/ /index.php?$query_string; 
} 

location = /favicon.ico { access_log off; log_not_found off; } 

access_log off; 
error_log /var/log/nginx/domain.com-error.log error; 

error_page 404 /index.php; 

location ~ \.php$ { 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
} 

location ~ /\.ht { 
    deny all; 
} 
} 
+0

'rewrite' не * видеть * строку запроса. Вам понадобится другой трюк, чтобы переместить строку запроса в информацию о пути. На этот вопрос был дан ответ: http://serverfault.com/questions/488444/nginx-rewrite-convert-querystring-to-path –

ответ

0

Это должно работать:

rewrite ^/foobar.php /foobar/$arg_id/? permanent; 

Вы можете получить любой ARG ument вот так $arg_{your_argument}. Просто замените {your_argument} фактическим именем аргумента.

Смежные вопросы