这是我的第二篇文章,因为我也找不到解决方案,所以我期待着你的帮助。我公司的网站是由辞职的员工创建的。他使用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页之间的变量。致谢
答案 0 :(得分:4)
添加到所有重写文件的末尾[qsa]。
这将添加get变量。
答案 1 :(得分:4)
RewriteRule ^B2C/(.*)/$ index.php?lang=$1 [QSA]
[QSA]
标志将查询字符串(在您的情况下为abc
)附加到此规则。目前,您的规则会忽略传递的查询字符串,并仅使用lang
等变量。为了适用于您的所有规则,每个规则最后都需要此标志。
修改查询字符串
默认情况下,查询字符串不会更改。您可以, 但是,在包含查询的替换字符串中创建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