这是我的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正在工作。
注意:我已经设置好了 &LT; base href =“http://example.com/”/&gt; 和RewriteBase /如上所述
我在SO处遇到了其他问题,但没有运气!
感谢您的建议!
我很抱歉..在这个意义上不起作用,POST变量可能会在htaccess重定向期间丢失???
答案 0 :(得分: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值。
祝你好运!