繁体   English   中英

htaccess /重写规则问题...有什么想法吗?

[英]htaccess / rewrite rule problems… any ideas?

我花了最后24小时在这里以及通过搜索google寻找解决我问题的方法,但是我一直找不到任何东西。 很抱歉,如果在任何地方重复此操作。

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

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

我现在正在用PHP编写网站的新版本,并且尝试使它具有搜索引擎友好的url / slugs。

/page/view/thispage
/account/login

我设法使用以下代码的顶部,使虚拟子域可为每个客户端使用,而我设法使用底部的代码,使子页面运行。

我遇到的问题是表单,例如用于注册该站点的表单,编辑用户配置文件等。我在该站点上了解到,用apache重写$ _POST变量应该传递给脚本,与重定向,但是我正在使用重写功能,当任何表单数据传递到一个数据段(例如/ 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文件才能读取post var,但是将其发布到子文件(例如/ profile / editprofile)时无法读取它们。 全局变量在我的服务器上关闭,但是以下内容仅显示默认的空白变量,因此显然尚未传递它们。

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

任何帮助,将不胜感激。 我对将htaccess文件用于除包含您可能知道的自定义错误文件之外的其他任何事物都是相当陌生的。

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

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

然后在你的方式,你可能会有URL中action属性塔不包含www. 因此,此操作的网址将被重定向,而POST可能会丢失...

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

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

也许这会有所帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM