0

管理システムに次のパスのページがあります。

http://192.168.1.253/xxxxxx/admin/view/news-items/issue/3

私はそれを次のように書き直そうとしています:

http://192.168.1.253/xxxxxx/admin/view/news-items.php?issue=3

ただし、ページは表示されますが、php は $_GET 変数を検出できないため、機能させることができないようです。2 つの .htaccess ファイルがあり、1 つは xxxxxx ディレクトリに、もう 1 つは admin ディレクトリにあります。どうぞ:

xxxxxx:

RewriteEngine On    # Turn on the rewriting engine

RewriteRule  ^([^/.]+)/delete/(1-9)/?$ $1.php?delete=$2 [L]
RewriteRule  ^([^/.]+)/?$ $1.php [L] # rewrite without query string parameters
RewriteRule  ^([^/.]+)/([^/.]+)/?$ $1.php\#$2 [L] # one name string parameter

管理者:

RewriteEngine On    # Turn on the rewriting engine

RewriteRule  ^([^/.]+)/?$ $1.php [L] # rewrite without query string parameters
RewriteRule  ^([^/.]+)/(\d+)/?$ $1.php?id=$2 [L] # one id parameter
RewriteRule  ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/issue/(\d+)/?$ $1.php?issue=$2 [L] # one issue parameter
RewriteRule  ^([^/.]+)/(\d+)/(\d+)/?$ $1.php?id=$2&file_id=$3 [L] # two parameters

編集

新しいコードは次のとおりです。

xxxxxx:

RewriteEngine On    # Turn on the rewriting engine

#RewriteRule  ^([^/.]+)/delete/(\d+)/?$ $1.php?delete=$2 [L,QSA]
RewriteRule  ^([^/.]+)/?$ $1.php [L,QSA] # rewrite without query string parameters
RewriteRule  ^([^/.]+)/([^/.]+)/?$ $1.php\#$2 [L,QSA] # one name string parameter

管理者:

RewriteEngine On    # Turn on the rewriting engine

#RewriteRule  ^([^/.]+)/?$ $1.php [L,QSA] # rewrite without query string parameters
#RewriteRule  ^([^/.]+)/(\d+)/?$ $1.php?id=$2 [L,QSA] # one id parameter
RewriteRule  ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/issue/(\d+)/?$ $1.php?issue=$2 [L,QSA] # one issue parameter
RewriteRule  ^([^/.]+)/(\d+)/(\d+)/?$ $1.php?id=$2&file_id=$3 [L,QSA] # two parameters
4

1 に答える 1

1

[QSA]書き換えルールにフラグを含める必要があります。

RewriteRule  ^([^/.]+)/delete/(1-9)/?$ $1.php?delete=$2 [L,QSA]
RewriteRule  ^([^/.]+)/?$ $1.php [L,QSA] # rewrite without query string parameters
# etc.

ドキュメントから:

クエリ文字列の変更

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

于 2012-04-12T11:20:08.753 に答える