由于htaccess文件而禁止传递变量

时间:2012-05-25 02:29:23

标签: php html .htaccess

这是我的第二篇文章,因为我也找不到解决方案,所以我期待着你的帮助。我公司的网站是由辞职的员工创建的。他使用htaccess文件来交换网站中的所有链接。现在,当我想通过地址栏将变量从一个页面传递到第二个页面时,由于htaccess的影响,第二个页面无法获取变量。任何人都可以帮我找到修改htaccess的解决方案,当时我对htaccess文件的经验很少。这是htacess文件。

RewriteEngine On
Options All -Indexes
DirectoryIndex index.php
RewriteRule ^index\.html$ index.php
RewriteRule ^B2C/(.*)/(.*)/(.*).html$ index.php?lang=$1&p=$2&id=$3
RewriteRule ^B2C/(.*)/(.*).html$ index.php?lang=$1&p=$2
RewriteRule ^B2C/(.*)/$ index.php?lang=$1
RewriteRule ^postoffice.html$ more/PO.php
RewriteRule ^hospital-clinic.html$ more/HO.php
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

这是我在代码中的代码,它希望在页面“1”中传递变量$ main_po_num

echo "<td><a href='B2C/$lang/Contact_detail.html?abc=$main_po_num'>$main_po_num</a></td>";

这是代码I vardump在页面“2”中返回NULL(意思是无法获取传递变量)

var_dump ($_GET["abc"]);

即使地址栏也可以显示变量

  

.64.4:1234 / B2C / VI / Customer_Contact ABC = S110023845.html

那么我怎么能修改htacess然后我可以通过并获得2页之间的变量。致谢

3 个答案:

答案 0 :(得分:4)

添加到所有重写文件的末尾[qsa]

这将添加get变量。

答案 1 :(得分:4)

RewriteRule ^B2C/(.*)/$ index.php?lang=$1 [QSA]

[QSA]标志将查询字符串(在您的情况下为abc)附加到此规则。目前,您的规则会忽略传递的查询字符串,并仅使用lang等变量。为了适用于您的所有规则,每个规则最后都需要此标志。

来自mod_rewrite documentation

  

修改查询字符串

     

默认情况下,查询字符串不会更改。您可以,   但是,在包含查询的替换字符串中创建URL   字符串部分。只需在替换字符串中使用问号   表示应将以下文本重新注入   请求参数。如果要删除现有查询字符串,请结束   替换字符串只有一个问号。 结合新旧   查询字符串,使用[QSA]标志。

答案 2 :(得分:2)

我在一段时间内没有使用过htaccess,所以这只是一个相当有教育意义的猜测,但你可以尝试一下。

这一行:

RewriteRule ^B2C/(.*)/(.*).html$ index.php?lang=$1&p=$2

正在研究你的例子:

<a href='B2C/$lang/Contact_detail.html?abc=$main_po_num'>$main_po_num</a>;

基本上发生的事情是第一个(。)被重写为插入$ 1而第二个(。)被替换为$ 2.

所以,我不是100%这是正确的语法,所以你可能要查看它,但你应该能够做到这样的事情:

RewriteRule ^B2C/(.*)/(.*).html/?(.*)$ index.php?lang=$1&p=$2&$3