.htaccess 重写多查询字符串,只有一个查询作为路径
.htaccess rewrite for multi-query string with only one query as path
我尝试从
重写 .htaccess
https://example.com/?page=contact&query1=test1&query2=test2
到
https://example.com/contact/?query1=test1&query2=test2
输出为
Array
(
[page] => contact
[query1] => test1
[query2] => test2
)
我尝试了下面的重写但未能获得输出-
RewriteEngine On
RewriteRule ^(.*?)//?(.*)$ /?page=& [NC,L]
这里我应该包括,我可以在 https://example.com/contact/ 之后进行任何查询,输出如下,类似于带有“page 的常规获取字符串”查询。
如-
https://example.com/?page=contact2&query15=test14&query25=test24&query35=test34
将输出 $_GET 查询字符串
Array
(
[page] => contact2
[query15] => test14
[query25] => test24
[query35] => test34
)
以下规则应该可以解决问题:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/?([^/]+).* /?page=&%1 [NC,L]
我们检查正在打开的 link 是否不是 valid/existing 文件或目录,然后我们捕获当前的查询字符串,最后我们重写访问的页面。
在以下位置查看实际效果:https://htaccess.madewithlove.be?share=1e473616-5364-5718-8819-a8032a5319c1
我尝试从
重写 .htaccesshttps://example.com/?page=contact&query1=test1&query2=test2
到
https://example.com/contact/?query1=test1&query2=test2
输出为
Array
(
[page] => contact
[query1] => test1
[query2] => test2
)
我尝试了下面的重写但未能获得输出-
RewriteEngine On
RewriteRule ^(.*?)//?(.*)$ /?page=& [NC,L]
这里我应该包括,我可以在 https://example.com/contact/ 之后进行任何查询,输出如下,类似于带有“page 的常规获取字符串”查询。
如-
https://example.com/?page=contact2&query15=test14&query25=test24&query35=test34
将输出 $_GET 查询字符串
Array
(
[page] => contact2
[query15] => test14
[query25] => test24
[query35] => test34
)
以下规则应该可以解决问题:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/?([^/]+).* /?page=&%1 [NC,L]
我们检查正在打开的 link 是否不是 valid/existing 文件或目录,然后我们捕获当前的查询字符串,最后我们重写访问的页面。
在以下位置查看实际效果:https://htaccess.madewithlove.be?share=1e473616-5364-5718-8819-a8032a5319c1