我有一个结构为http://localhost/slugone/dynamicslug?query=00000
的网址,我正在尝试将其重写为http://localhost/slugone/dynamicslug/00000
。
我设法让.htaccess识别出这个RewriteRule
RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L,R=301]
但这并不是我需要的,而不是将/slugone/dynamicslug/00000
屏蔽为/slugone/dynamicslug?query=00000
,而是将漂亮的网址重定向到带有查询参数的网址。
/dynamicslug/
是一个slug,用于在页面上显示特定产品,?query=00000
用于选择此产品的变体,因此我无法明确使用{ {1}}在我的重写规则中,也是。
搜索SO没有给我任何结果,因为我可以找到的所有问题都是在重写中使用/dynamicslug/
,我不是。
答案 0 :(得分:3)
你应该反转你的RewriteRule:
RewriteCond %{QUERY_STRING} ^query=([0-9]+)$
RewriteRule ^slugone/([^/]+)$ /slugone/$1/%1? [L,R=301]
修改强>
如果您希望它表现为一个漂亮的URL,您应该只删除初始RewriteRule中的重定向:
RewriteRule ^slugone/(.*)/(.*)$ /slugone/$1?query=$2 [L]