Forms mod_rewrite正在阻止我的表单按要求提交

Forms mod_rewrite正在阻止我的表单按要求提交,forms,.htaccess,mod-rewrite,post,subdomain,Forms,.htaccess,Mod Rewrite,Post,Subdomain,我已经创建了www.example.com和m.example.com。m.example.com位于htdocs/m/文件夹中。我还使用.htaccess删除了“.php”扩展名。我在根目录中有以下代码: RewriteCond %{REQUEST_METHOD} =POST RewriteRule ^ - [L] # Redirect external .php requests to extensionless url RewriteCond %{THE_REQUEST} \s/+(.*

我已经创建了www.example.com和m.example.com。m.example.com位于htdocs/m/文件夹中。我还使用.htaccess删除了“.php”扩展名。我在根目录中有以下代码:

RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ - [L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]

#mobile
RewriteCond %{HTTP_HOST} ^m\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/m(/|$) [NC]
RewriteRule ^(.*)$ m/$1 [L]

# Resolve .php file for extension-less php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
我在m.example.com上有表格。例如,在m.example.com/myform.php中,我有

<form method="post" action="processform.php">
 .....
</form>

.....
我希望它被提交到m/文件夹(/m/processform.php),但现在它总是提交到主目录的processform.php。我尝试了
action=“//m.example.com/processform.php”
,但没有成功

有人知道如何解决这个问题吗?谢谢

更新:
如果表单的方法是get而不是post,则表单将正确提交(到/m/processform.php)

第一个重定向可能与post请求发生冲突,请尝试将请求正则表达式更改为:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\s/+(.*?/)?(?:index)?(.*?)\.php[\s?] [NC]

实际上,您的规则正在跳过来自所有重写规则的
POST
请求。您可以调整规则,从外部重定向中跳过
POST
,并使
POST
的内部重写保持活动/启用状态,如下所示:

# Redirect external .php requests to extensionless url
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]

#mobile
RewriteCond %{HTTP_HOST} ^m\.example\.com$ [NC]
RewriteRule ^((?!m/).*)$ m/$1 [L,NC]

# Resolve .php file for extension-less php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

附言:我还简化了你的第二条规则。

太好了!非常感谢!