Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess重写以将目录转换为/key/value/key/value_.htaccess_Url - Fatal编程技术网

.htaccess重写以将目录转换为/key/value/key/value

.htaccess重写以将目录转换为/key/value/key/value,.htaccess,url,.htaccess,Url,我以前见过它,其中使用规则将URL上的目录转换为key=value请求查询 我不知道该怎么做,这样我就可以有多对了 例如: http://www.example.com/mykey/myvalue/mykey2/myvalue2 将映射到: http://www.example.com?mykey=myvalue&mykey2=myvalue2 谢谢。我见过的这种模式最常见的用法是在Zend框架中,但我相信这是通过前端控制器(即PHP代码)实现的。我相信,没有办法通过mod_rewr

我以前见过它,其中使用规则将URL上的目录转换为key=value请求查询

我不知道该怎么做,这样我就可以有多对了

例如:

http://www.example.com/mykey/myvalue/mykey2/myvalue2
将映射到:

http://www.example.com?mykey=myvalue&mykey2=myvalue2

谢谢。

我见过的这种模式最常见的用法是在Zend框架中,但我相信这是通过前端控制器(即PHP代码)实现的。我相信,没有办法通过mod_rewrite匹配未知数量的匹配。也就是说,如果你知道最多会有3对,你可以使用

RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?$1=$2 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /index.php?$1=$2&$3=$4 [QSA,L]
RewriteRule ([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /index.php?$1=$2&$3=$4&$5=$6 [QSA,L]

…但如果没有已知的最大值,则无法执行。

使用此.htaccess代码对基于
键/值的URI进行基于递归的转换:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)(/.*)?$ $3?$1=$2 [N,QSA]
RewriteRule ^(/[^/]+|[^/]+/|/?)$ /index.php [L,QSA]

使用这些规则可以创建
http://localhost/n1/v1/n2/v2/n3/v3/n4/v4
将在内部重定向到
http://localhost/?n4=v4&n3=v3&n2=v2&n1=v1
将由/分隔的每对URL段视为查询字符串的名称-值对。但请记住,如果URI没有偶数个段,例如:
http://localhost/n1/v1/n2/
然后它将被重定向到
http://localhost/?n1=v1
,丢弃多余的氮气。

这里的教程非常好


如何做到这一点,以便在实施此规则之前需要url的另一部分,例如
http://localhost/rewrite/n1/v1/n2/v2/
使用
RewriteRule^(rewrite)/([^/]*)/([^/]*))/([^/]*)(/.*)?$/$1/$4?$2=$3[L,QSA,NC]
这是我需要包括的唯一一行吗?因此,在RewriteRule^(data)/([^/]*)/([^/]*)(/.*)$/datahandler.php/$1/$4?$2=$3[L,QSA,NC]
?不可能在注释中放置代码,建议您根据具体要求创建一个新问题,我将尝试回答。