1
使用mod_rewrite 2个GET参数需要从旧的URL重写:如何重写在.htaccess
example.com/search?search_query=SOMEQUERY&search_type=videos&type=public
到
example.com/search/videos?search_query=SOMEQUERY&type=public
使用mod_rewrite 2个GET参数需要从旧的URL重写:如何重写在.htaccess
example.com/search?search_query=SOMEQUERY&search_type=videos&type=public
到
example.com/search/videos?search_query=SOMEQUERY&type=public
尝试像靠近你.htaccess
文件的顶部如下:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^search_query=([^&]*)&search_type=(videos)&type=(public)$
RewriteRule ^search$ /search/%2?search_query=%1&type=%3 [R,L]
这与给出的示例URL完全匹配,除了SOMEQUERY是可变的。
%1
,%2
%3
和反向引用是对相应的捕获子模式在前述CondPattern。即。 <SOMEQUERY>
,videos
和public
。 %2
和%3
只是为了保持一致性,并允许您轻松地添加另一个search_type。例如。 search_type=(videos|images)
。
这是一个临时(302)重定向。如果这意图是永久性的,请将R
更改为R=301
,但只有在确保工作正常后方可使用。 (301s被浏览器强制缓存,因此可能会使测试出现问题。)
很棒!非常感谢!非常明确,清楚地解释。 查询中的西里尔字母编码还有一个小问题。我们将用php或nginx解决这个问题。祝你好运! –
不客气。如果这回答了您的问题,请将答案标记为“已接受”(箭头下方的复选标记),将其从未答复的问题队列中移除。一旦你有15 +代表,你也可以upvote你认为有用的答案(和其他问题)。非常感谢,谢谢:) – MrWhite