我得到这样的 url ' http://mysite.pl/public?products,BEER/7,shop_shelf ' 我想把它改写成http://mysite.pl/index.php?product=BEER/7 in 。访问。
有任何想法吗 ?
我得到这样的 url ' http://mysite.pl/public?products,BEER/7,shop_shelf ' 我想把它改写成http://mysite.pl/index.php?product=BEER/7 in 。访问。
有任何想法吗 ?
问号后的所有内容都是查询字符串,RewriteRule
指令仅适用于替换字符串。你应该RewriteCond
改用。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^products,([-/_\.a-z0-9]*?),[-/_\.a-z0-9]+$ [NC]
RewriteRule ^public$ index.php?product=%1 [NC,L]
'RewriteRule ^products,([a-zA-Z\.\+a-z0-9-_/]*),([a-zA-Z\.\+a-z0-9-]+))$ index.php?product=$1 [L,B,NC]
我可以在那里看到几个问题,你不是在检查“public”吗?一开始,我认为您也混淆了字母表。
RewriteRule ^public\?products,([a-zA-Z\.\+-_]+)\/([0-9]+),([a-zA-Z-_]+)$
尝试类似的东西,虽然我只是快速编写它而没有测试。它应该检查一个以 开头的字符串,public?products,
后跟一个由 1 个或多个字符组成的子模式[a-zA-Z\.\+-_]
(这将$1
在您的目标中),然后/
是另一个由一个或多个字符组成的子模式[0-9]
($2
),,
最后是另一个包含字符的子模式[a-zA-Z-_]
($3
如果需要)
就像我说的那样,我还没有测试过,所以就从它开始玩吧