htaccess/重写规则问题.任何想法


htaccess / rewrite rule problems... any ideas?

在过去的 24 小时里,我在这里和搜索谷歌都在寻找我的问题的解决方案,但我找不到任何东西。抱歉,如果这在任何地方重复

对于我网站的最新版本,用php编写,我只有一个索引页面,我使用这样的请求来获取正确的页面:

?public=view/thispage
?page=account/loggedin

我现在正在编写该网站的新版本,也是用 php 编写的,例如,我正在尝试使其具有搜索引擎友好的网址/蛞蝓

/page/view/thispage
/account/login

我已经设法得到了它,以便虚拟子域适用于每个客户端,使用下面代码的顶部,并且我设法使用底部部分让 slug 页面工作。

我遇到的问题是表单,例如用于注册网站、编辑用户个人资料等的表单。我在这个网站上读到,使用 apache 重写 $_POST 变量应该传递给脚本,这与重定向不同,但我使用的是重写,当任何表单数据传递给 slug 时(例如/profile/edit)它不起作用,尽管如果它传递给 virtualsubdomain.mydomain.com/test.php 例如它会。

任何人都可以帮助我找到一种方法来修复下面的 htaccess 文件并允许将 $_POST 变量传递给我的 slug脚本(索引.php在下面的代码中)?我可能只是错过了一件小事。

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www'.mydomainhere.org
RewriteCond %{HTTP_HOST} ^(.+).mydomainhere.org/^(.+)
RewriteRule ^([^/]*)$ http://mydomainhere.org [P,L]
ErrorDocument 404 /index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php
</IfModule>

我无法弄清楚为什么 post vars 可以被存在于仅虚拟的子域中的 php 文件读取,但在将它们发布到蛞蝓(例如/profile/editprofile)时无法读取它们。全局变量在我的服务器上关闭了,但以下内容只是调出默认的空白变量,因此它们显然没有被传递。

$test = ''; //define the variable to please global vars off
$test = $_POST["namehere"];
echo $test;

任何帮助将不胜感激。我对使用 htaccess 文件进行任何事情相当陌生,而不仅仅是包含您可能知道的自定义错误文件。

我只是猜测,因为您的.htaccess RewriteCond和其他有同样问题的人 - 您将任何子域(www或不包含www.的URL除外)重定向到您的域URL,而无需www. - 如果我做对了:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www'.mydomainhere.org
RewriteCond %{HTTP_HOST} ^(.+).mydomainhere.org/^(.+)
RewriteRule ^([^/]*)$ http://mydomainhere.org [P,L]

然后在您的表单中,您可能action属性中的 URL 不包含www.因此此操作 URL 被重定向并且 POST 可能会丢失......

尝试使用包含www.的 URL 填充表单action属性:

<form method="POST" action="http://www.mydomainhere.org/my_page_to_post_to.php">

也许这会有所帮助...