Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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/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
Apache 保留post数据的重写规则_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Apache 保留post数据的重写规则

Apache 保留post数据的重写规则,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正试图建立一个重写规则。我无法重定向,因为我需要保留POST并获取数据。特别是,如果不存在,我需要添加字符串“v1”。因此: -> 我试过: RewriteEngine On RewriteRule "/(.*)$" "/v1/$1" [NC,L] 但这是行不通的。你能帮我吗 编辑:使用第一个答案: RewriteRule !^/?v1/ /v1%{REQUEST_URI} [NC,L] http://www.example.com -> OK http://www.example.

我正试图建立一个重写规则。我无法重定向,因为我需要保留POST并获取数据。特别是,如果不存在,我需要添加字符串“v1”。因此:

->

我试过:

RewriteEngine On
RewriteRule "/(.*)$" "/v1/$1" [NC,L]
但这是行不通的。你能帮我吗

编辑:使用第一个答案:

RewriteRule !^/?v1/ /v1%{REQUEST_URI} [NC,L]

http://www.example.com -> OK
http://www.example.com/v1 -> not preserving POST data (GET OK)
http://www.example.com/v1/ -> OK, please why (I just added a slash after v1, but this is not the solution I'm looking for)?
这样做:

RewriteEngine On

RewriteRule !^/?v1/ /v1%{REQUEST_URI} [NC,L]
编辑:因为
/v1/
是一个目录,您正在输入
http://www.example.com/v1
Apache的
mod_dir
模块添加了一个尾随
/
以使其成为
http://www.example.com/v1/
使用301重定向。由于301重定向,POST数据丢失

要防止此行为,请使用此代码段:

DirectorySlash Off
RewriteEngine On

# add a trailing slash to directories silently
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L]

RewriteRule !^/?v1(/.*)?$ /v1%{REQUEST_URI} [NC,L]

您的意思是,只有在使用尾随的
/
时,它才会保留post吗?您没有执行重定向,因此应该保留数据。