0

这是我的 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 都不起作用。

注意:我已经设置了 <base href="http://example.com/"/> 和 RewriteBase / 如上所述

我已经在 SO 上解决了其他问题,但没有运气!

感谢您的意见!

对不起..在某种意义上不起作用,POST变量可能在htaccess重定向期间丢失了???

4

1 回答 1

1

我会验证您用于构建表单操作的代码。我同意上述评论者的观点,即您由于重定向而丢失了 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 值。

祝你好运!

于 2013-02-10T21:13:22.427 回答