0

私は次のようなhtaccessファイルを持っています:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?$1=$1&pid=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ /index.php?pid=$1 [L,QSA]

これは、fe "administration/modules"のようなリンクを"index.php/ Administration = Administration&pid =modules"または"administration"から"index.php?pid=administration"に転送します。

パフォーマンスの理由については、htaccessを変更して、次のようなリンクを送信できるようにします。

「administration_55」

index.php?pid = 55 "

したがって、「55」(レコードのID)は、pidパラメータ「pid=administration_55」から何らかの方法で抽出する必要があります。また、「_ 55」の部分がない「www.example.com/administration」のようなURLを表示したいので、htaccessファイルまたはヘッダーリダイレクトでphp-fileに応答しますか?

事前に感謝、ジェイデン

4

3 に答える 3

0

できないからといって、そうする必要があるとは限りません...サイト自体のindex.phpでこれを処理することはできません。これは、REFERRERより安全で、.htaccessサポートを有効にする必要がないという追加機能に基づいています... ?

于 2012-06-06T15:33:45.223 に答える
0

htaccessを使用してリダイレクトできますが、URLに_55の部分が含まれている必要があります

于 2012-06-06T15:41:44.910 に答える
0
# e.g. /administration/modules 
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?$1=$1&pid=$2 [L,QSA]
# e.g. /administration_55
RewriteRule ^([^/]+)_([[0-9]+)/?$ /index.php?$1=$1&pid=$2 [L,QSA]
# e.g. /test
RewriteRule ^([^/]+)/?$ /index.php?pid=$1 [L,QSA]

55を削除する場合、最良の方法はPHPを使用することです。データベーステーブルに「url」という別のフィールドがあるので、正しいurl(-part)を持つレコードを見つけることができます。また、パフォーマンスのために、このフィールドにインデックスを追加しました。

于 2012-06-06T15:51:59.950 に答える