4

私も解決策を見つけることができないので、これは私の2番目の投稿です。あなたの助けを楽しみにしています。私の会社のウェブサイトは、退職したスタッフによって作成されました。彼は htaccess ファイルを使用して、Web サイト内のすべてのリンクを交換しました。そして今、あるページから2ページ目にアドレスバー経由で変数を渡したいのですが、2ページ目はhtaccessの影響で変数をGETできません。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>";

これは、NULLを返すページ「2」でvardumpするコードです(パス変数を取得できないことを意味します)

var_dump ($_GET["abc"]);

アドレスバーにも変数を表示できます

.64.4:1234/B2C/vi/Customer_Contact?abc=S110023845.html

では、htacess をどのように修正すれば、2 ページ間で変数を渡して取得できますか。ありがとう

4

3 に答える 3

4

すべての rewriterules の最後に[qsa]を追加します。

これにより、get 変数が追加されます。

于 2012-05-25T02:39:05.747 に答える
4
RewriteRule ^B2C/(.*)/$ index.php?lang=$1 [QSA]

[QSA]フラグは、クエリ文字列 (この場合は)abcをこのルールに追加します。現在、ルールは渡されたクエリ文字列を無視し、lang変数のみを使用します。これをすべてのルールに適用するには、各ルールの最後にこのフラグが必要です。

mod_rewriteのドキュメントから:

クエリ文字列の変更

デフォルトでは、クエリ文字列は変更されずに渡されます。ただし、クエリ文字列部分を含む置換文字列で URL を作成することはできます。置換文字列内で疑問符を使用するだけで、次のテキストをクエリ文字列に再挿入する必要があることを示します。既存のクエリ文字列を消去する場合は、置換文字列を疑問符だけで終了します。新しいクエリ文字列と古いクエリ文字列を組み合わせるには、[QSA] フラグを使用します。

于 2012-05-25T02:39:20.023 に答える
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 番目の (. ) が $2 に代入されます。

繰り返しますが、私は 100% ではありませんが、これは正しい構文なので、これを調べる必要があるかもしれませんが、次のようなことができるはずです:

RewriteRule ^B2C/(.*)/(.*).html/?(.*)$ index.php?lang=$1&p=$2&$3
于 2012-05-25T02:45:45.937 に答える