0

やりたいことの解決策を見つけるのに苦労しています。数千のアフィリエイトが私たちのサイトにサインアップする予定です. 彼らはユーザー名を提供し、基本的に URL www.domain.com/affiliate/username をクライアントに提供します。

したがって、私が開始する URL は www.domain.com/affiliate/home.html?userid=bob です (bob がユーザー名である場合)。

そのユーザーIDが存在するかどうかをmysqlデータベースで確認し、それをwww.domain.com/affiliate/bob URLにリダイレクトする必要があります。

今、私は .htaccess ファイルにこれを持っています:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\/]+)$ affiliate/home.html?affiliate=$1 [L]

それは明らかにうまくいきません.htaccessを扱ったことはありません. どんな助けでも大歓迎です。ありがとうございました。

4

2 に答える 2

1

これを試して:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^affiliate/([^/]+)/?$ /affiliate/home.html?affiliate=$1 [L]

誰かがクエリ文字列を含む URL を入力した場合に見栄えの良い URL にリダイレクトする場合:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /affiliate/home.html\?affiliate=([^\ &]+)&?([^\ ]*)
RewriteRule ^ /affiliate/%2?%3 [L,R=301]

htaccess ファイルを使用して、書き換えが発生する前にユーザー名がデータベースにあるかどうかを確認する方法はありません。apache 2.4 でデータベースと対話する方法やRewriteMap(htaccess ではなく、サーバーまたは仮想ホスト構成でのみ定義できる) を使用してデータベースと通信する方法がありますが、home.html でチェックを行い、ユーザーが見つかりません。

于 2013-06-30T21:30:07.263 に答える
0

他の同様の質問に関する私の回答を参照してください。

www.domain.com/affiliate/home.html?userid=bobにリダイレクトする必要があります/affliate/bob/affliate/bobに書き換えたい/affiliate/home.html?userid=bob


これをまたはに追加し.htaccessます。/www//public_html/

RewriteEngine on

RewriteCond %{QUERY_STRING} ^affiliate=([^&]*)$
RewriteRule ^affiliate/home\.html /affiliate/%1? [R,L]

RewriteRule ^affiliate/(.*)$ affiliate/home.html?affiliate=$1&r=0 [L]

ユーザーが にアクセスしようとすると、最初のルールが一致しますaffiliate/home.html?userid=bob。RewriteCondition は、派手な URL を記述するために必要なクエリ文字列の部分 (? の後) と一致します。%1書き換え条件の最初の「キャプチャ グループ」に一致します。最後の?は、クエリ文字列をクリアします。[R]それがリダイレクトであることを意味します(リンクされた回答を参照してください)。[L]これが一致すると、一致が停止することを意味します。

2 番目のルールは内部書き換えです。$1RewriteRule の最初の「キャプチャ グループ」に一致します。末尾&r=0は、最初のルールが一致しないようにするためにあります。RewriteCond %{REQUEST_FILENAME} !-fファンシー URL は、それを処理するファイルと同じディレクトリにあるため、適切に機能するには が必要です。

于 2013-06-30T18:25:20.300 に答える