【发布时间】:2012-06-20 12:59:13
【问题描述】:
在过去的 24 小时里,我一直在这里和通过搜索 google 来寻找我的问题的解决方案,但我一直找不到任何东西。抱歉,如果这在任何地方重复。
对于我网站的最后一个版本,用 php 编写,我只有一个索引页面,我使用这样的请求来获取正确的页面:
?public=view/thispage
?page=account/loggedin
我现在正在编写网站的新版本,也是在 php 中,并且我正在尝试使其具有搜索引擎友好的 urls/slugs 等示例
/page/view/thispage
/account/login
我已经设法让虚拟子域为每个客户端工作,使用下面代码的顶部,我已经设法让 slug 页面使用底部工作。
我遇到的问题是表单,例如用于注册站点、编辑用户配置文件等的表单。我在这个站点上读到,使用 apache 重写 $_POST 变量应该传递给脚本,与重定向不同,但我使用的是重写,当任何表单数据传递给 slug(例如 /profile/edit)时,它不起作用,尽管如果它传递给 virtualsubdomain.mydomain.com/test.php例子。
任何人都可以帮助我并找到一种方法来修复下面的 htaccess 文件并允许将 $_POST 变量传递给我的 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>
我不明白为什么 post vars 可以被仅存在于虚拟子域中的 php 文件读取,但是在将它们发布到 slug(例如 /profile/editprofile)时无法读取它们。全局变量在我的服务器上已关闭,但以下只是显示默认的空白变量,因此它们显然没有被传递。
$test = ''; //define the variable to please global vars off
$test = $_POST["namehere"];
echo $test;
任何帮助将不胜感激。除了您可能知道的自定义错误文件之外,我对使用 htaccess 文件还很陌生。
【问题讨论】:
-
恭喜你的文字墙,但请将其简化为“我的网址看起来像这样,我想改写成那样”,因为实际上没有任何非-问题中的代码文本会为问题本身添加任何内容。此外 - 不要说你的问题很紧急。每个人都认为他们的问题很紧迫。此外,我不明白为什么您认为
mod_rewrite与 PHP 的$_POST数组存在错误;它没有。您的问题可能出在其他地方。 -
我已经让 url 工作了......它的 post 变量没有。我在这里添加了详细信息,就像我在这里发现的每个示例一样不工作,然后有人发布“如果你使用重写它应该”......但对我来说不是。我实际上并没有说我认为那里有错误......我说我正在做的事情不起作用,我不知道为什么这么简单地寻求帮助:(
-
不知道原因,但是我们运行 Solaris 的客户端遇到了同样的问题 - 使用 .htaccess 重写他们无法将 POST 传递给重写/重定向的 URL,尽管 apache 应该传递 POST 转发......顺便说一句 - 将行
<IfModule mod_rewrite.c>放在第一行RewriteEngine on之前并删除第二行RewriteEngine on... -
谢谢...这是我从两个不同的来源获得的两个不同的代码块,只是为了我自己的使用而修改过,所以我整理了一下...仍然没有成功虽然在帖子变量上:(
-
我已经在我的服务器上进行了测试,使用您提供的确切
.htaccess内容,我的index.php成功转储了$_POST。我的猜测是您的问题与您的重写规则无关。您可以尝试删除重写并直接提交到您的index.php文件,以排除它或您的表单有问题吗?
标签: php apache .htaccess mod-rewrite post