Apache 保留post数据的重写规则
我正试图建立一个重写规则。我无法重定向,因为我需要保留POST并获取数据。特别是,如果不存在,我需要添加字符串“v1”。因此: -> 我试过: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.
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吗?您没有执行重定向,因此应该保留数据。