我最终放弃了所描述的WordPress解决方案,并将WordPress全部用于该项目,构建了自己的基本前端。
使用此答案:https://technicalseo.com/tools/htaccess/ 我能够为每种可能性创建一个规则。
请记住,URL必须包含索引。除非出现QSA,否则不会将php和URL参数传递给脚本,但这会将它们添加到URL中,从而达不到目的。
以下是我在htaccess文件中所做的操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^loc=(.*)&cat=(.*)&sub=(.*)$
RewriteRule ^index.php$ /%1/%2/%3/? [L,R=301]
RewriteCond %{QUERY_STRING} ^loc=(.*)&cat=(.*)$
RewriteRule ^index.php$ /%1/%2/? [L,R=301]
RewriteCond %{QUERY_STRING} ^loc=(.*)$
RewriteRule ^index.php$ /%1/? [L,R=301]
RewriteCond %{QUERY_STRING} ^name=(.*)$
RewriteRule ^index.php$ /%1/? [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
我确信在WordPress中有一种方法可以做到这一点,我很快就使用了重定向插件,但在测试了数百种可能性之后,时间就用完了。
要小心重定向和缓存,如果使用WordPress,每次更改规则时都需要更新永久链接。