.htaccess在没有index.php的情况下重写

时间:2017-03-15 12:45:07

标签: apache .htaccess mod-rewrite url-rewriting

我有一个结构为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/,我不是。

1 个答案:

答案 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]