我正在尝试让Wordpress处理重写URL中的自定义参数。使用下面的重写,我可以做一个print_r($ _ REQUEST)并看到诸如spots.com/plans/ky/lexington/这样的URL实际上显示state = ky和city = lexington,但它在404.php上,而不是实际将值发布到spots.com/plans /.
对于重写,我尝试过spot.com/?pagename=plans&state=$1&city=$2,但在这种情况下,它只会将我转储到spots.com/plans上,而不会填充任何内容。我已经得到了一个像spot.com/plans/41005/这样的URL来正确发布(使用last而不是break),但是第二个参数让我哄骗了大约10个小时的nginx配置和函数过滤器。 PHP。
/plans/?state=ky&city=lexington
正确填充页面,但是很丑陋而且很繁琐。
以下是我使用的最新Nginx配置,结果为
Array ( [q] => /plans/ [state] => ky [city] => burlington )
显示在404页面上,我被重定向到。
# serve static files directly
location ~* ^.+.(jpg|jpeg|gif|png|ico|html|txt)$ {
access_log off;
expires max;
}
location / {
try_files $uri $uri/ /index.php?q=$uri&$args; #q=$uri isn't needed, just using it for troubleshooting?
}
#Pass off php pages to php-fpm
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
rewrite ^/plans/([^.]*)/([^.]*)/$ /plans/?state=$1&city=$2 break;
rewrite ^/plans/([^.]*)/([^.]*)$ /plans/?state=$1&city=$2 break;
由于值似乎正在通过Nginx,我应该更多地看看
add_filter('query_vars', 'parameter_queryvars' );
function parameter_queryvars( $qvars )
{
$state[] = 'state';
$city[] = 'city';
$qvars = $city[] + $state;
return $qvars;
}
还是我在左外地出路?