1

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

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

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

我现在正在编写该网站的新版本,也是在 php 中,并且我正在尝试使其具有搜索引擎友好的 url/slugs 例如

/page/view/thispage
/account/login

我已经设法让虚拟子域为每个客户端工作,使用下面代码的顶部,我已经设法让 slug 页面使用底部工作。

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

谁能帮助我并找到一种方法来修复下面的 htaccess 文件并允许将 $_POST vars 传递给我的 slug 脚本(下面代码中的 index.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>

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

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

任何帮助,将不胜感激。除了您可能知道的自定义错误文件之外,我对使用 htaccess 文件还很陌生。

4

1 回答 1

1

我只是在猜测,因为您的 .htaccessRewriteCond和其他人有同样的问题 - 您将任何子域(除了www或不包含 的 URL www.)重定向到您的域 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 可能会丢失......

尝试action使用包含以下内容的 URL 填充您的表单属性www.

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

也许这会有所帮助...

于 2012-06-20T13:43:43.010 回答