wil*_*ium 7 php forms apache .htaccess mod-rewrite
这个问题非常类似于:是否可以重定向发布数据?(问到预告片)但这个答案似乎对我不起作用.
我有一个表格:
<form action="http://a.test.com/contact" name="contact" method="post">
Run Code Online (Sandbox Code Playgroud)
在一个附加域内,(test.com是一个插件),有一个子域(a.),里面有一个文件item.php和.htaccess
我的htaccess如下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
# Forces a trailing slash to be added
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
#normal rewrites
RewriteRule ^[~|-]?([a-zA-Z0-9]+)[/]*$ item.php?user=$1 [NC,L]
Run Code Online (Sandbox Code Playgroud)
注意:我将其保留为[NC,L],因为当我将其更改为[NC,P]时,它给出了500个服务器错误.
和我的item.php
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)
并且无论表单包含什么,$ _POST都是空白的...但是,如果我执行http://a.test.com/item.php?user=contact作为操作.
一切顺利.POST跳过了htaccess,SO上的解决方案似乎不起作用.
提前致谢
Pek*_*ica 20
您的"添加尾随斜杠"规则会强制执行标头重定向:
[R=301,L]
Run Code Online (Sandbox Code Playgroud)
标头重定向将丢弃POST值.
您必须删除该规则,或者为POST提交禁用它:
# Forces a trailing slash to be added
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18247 次 |
最近记录: |