我在wordpress中有一个页面,我正在使用一个名为Bad-Debt-Recovery-in/
的slug。我在该页面上使用了一个自定义的php查询,URL中的字符串如下
Bad-Debt-Recovery-in/?zipcode=55555&location=Chambers%20County+AL
我怎样才能把这个url变成像一样的碎片
Bad-Debt-Recovery-in/55555/Chambers-County/AL/
作为重写?任何帮助都将不胜感激!
更新:这个代码实际上就是我正在使用的。我还简化了它,并创建了第三个名为"state"的变量。一次重写是针对城市的,一次是针对县的页面:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^Bad-Debt-Recovery-And-Collection-Agencies-Services-In'/([^'/]+)'/([^'/]+)'/([^'/]+)'/? Bad-Debt-Recovery-And-Collection-Agencies-Services-In/?zipcode=$1&city=$2&state=$3 [QSA,L,NC]
RewriteRule ^Bad-Debt-Recovery-And-Collection-Agency-Services-In'/([^'/]+)'/([^'/]+)'/([^'/]+)'/? Bad-Debt-Recovery-And-Collection-Agency-Services-In/?countyid=$1&county=$2&state=$3 [QSA,L,NC]
RewriteRule ^index'.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
</IfModule>
# END WordPress
您所要求并寻求实现的是:将请求路径转换为查询字符串。
使用.htaccess RewriteRule指令修改传入请求
RewriteRule ^Bad-Debt-Recovery-in'/([^'/]+)'/([^'/]+)'/([^'/]+)'/? Bad-Debt-Recovery-in/?a=$1&b=$2&c=$3 [QSA,L,NC]
每个([^'/]+)
将路径元素捕获到变量$1,$2,$3...
中
末尾的?
简单地表示最后的/
是可选的,否则最后的匹配可能会失败
'
简单地转义"/"以进行文字解释
根据需要添加尽可能多的([^'/]+)
,并在查询中捕获它们
zipcode=$1&location=$2+$3
[QSA,L,NC]
末尾的修饰符称为标志
- QSA将查询字符串附加到重写的末尾(如果存在)
- L只是说这是最后一次重写
- NC表示不区分大小写
这是您的最终解决方案:
RewriteRule ^Bad-Debt-Recovery-in'/([^'/]+)'/([^'/]+)'/([^'/]+)'/? Bad-Debt-Recovery-in/?zipcode=$1&location=$2+$3 [QSA,L,NC]
您可以使用WP函数sanitize_title
将其与php循环相结合,即
$url = $_SERVER['REQUEST_URI'];
foreach($_GET as $g){
$url .= '/'.$g;
}
$url = sanitize_title($url);