我想RewriteRule获取特定查询属性
e.g。
https://website.com/shop/?req=cosmetics
为:
https://website.com/shop/cosmetics
我通过以下方式实现了这一目标:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^shop/(.+)$ shop/?req=$1 [L,QSA]
我的问题是这将替换任何查询属性......
我正在寻找的是在'?req ='上明确地执行RewriteRule。并让任何其他attr例如'富='只是传递和执行。
我知道RewriteCond%{QUERY_STRING}可以实现这一点,但我无法使其正常工作......
由于
答案 0 :(得分:1)
解决方案是更改第一个规则并执行类似的操作,否则服务器无法预测自己的其他查询字符串,除了现有的req
:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^shop/(.*)/(.*)$ /shop/?$1=$2 [L,QSA]
因此,请求https://website.com/shop/?req=cosmetics
将来自https://website.com/shop/req/cosmetics
请求,并且根据您的建议,https://website.com/shop/?foo=cosmetics
将来自https://website.com/shop/foo/cosmetics
请求
如果要从商店目录.htaccess
文件中应用此代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/shop/merchant
RewriteRule ^(.*)/(.*)$ /?$1=$2 [L,QSA]
它也将排除merchant
,测试它。