这是我的htaccess
Options -Indexes
<IfModule dir_module>
DirectoryIndex in.php
</IfModule>
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule .(css|jpe?g|gif|png|js|css|htm|html|mp3|wav|ico)$ - [L]
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]+ /([^/]+/)*[^.#? ]+.php([#?][^ ]*)? HTTP/
RewriteRule ^(([^/]+/)*[^.]+).php http://www.example.com/$1 [R=301,L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^some/(.*)/(.*)/$ test.php?z=$1&n=$2 [NC,L]
RewriteRule ^some/(.*)/(.*)$ test.php?z=$1&n=$2 [NC,L]
RewriteRule ^some/(.*)/$ test.php?z=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !.*test.php$ [NC]
RewriteRule ^([^.]+)$ $1.php [NC,L]
在实现mod_rewrite之后,具有相对路径的$_POST都不起作用。
注意:我已经设置<基本href="http://example.com/"/>和RewriteBase/如上所述
我已经在SO上完成了其他问题,但没有运气!
谢谢你的建议!
对不起。。从这个意义上说,POST变量可能在htaccess重定向过程中丢失???
我会验证用于构建表单操作的代码。我同意上面的评论,因为重定向,您正在丢失POST变量。
为什么会发生这种情况?
首先,从非www重定向到www的重写规则应该只发生在第一次有人访问你的网站而没有www的时候。您应该相应地进行编程。
也就是说,有人在"example.com"中键入,你的重写会将他们带到"www.example.com"
从那时起,如果您必须在表单中引用完整的域,请使用整个WWW版本。
<form action="http://www.example.com/processForm.php" method="POST">
或者,您可以停止使用完整域。
我经常看到这种情况发生在程序员使用定义配置对象的插件时。也许那个配置对象指向非www版本是偶然的。想象一下这个代码:
$config = array('domain'=>'example.com', 'othersettings'=>'more here');
表单有时是这样创建的:
<form action="<?php echo $config['domain'] ?>/processForm.php" method="POST">
看,这将被转换为非www版本,从而丢失POST值。
祝你好运!