1

get変数をデータベース(ユーザー名)の値に変更するために.htaccessを使用することになっているのではないかと思っていました。

だからもしあれば

http://www.url.com/user.php?u=1

どのようにそれを変換しますか

http://www.url.com/andrewliu

ありがとう!

4

3 に答える 3

3

Mod-ReWriteを使用する必要があります。これはhtaccessファイルで使用できますが、httpd.confファイルにアクセスできる場合は、より高速であることがわかります。

理想的には、htaccessファイルで?u = 1を使用し、それを使用して名前を検索し、名前を末尾に追加します。そうしないと、ユーザー名を検索する必要があり、スペルミスなどが発生する可能性があります。

RewriteRule ^/([0-9]+)/.*$ /user.php?u=$1 [L]

これがStackoverflowのやり方です。URLに番号を付けずにこのページにアクセスしてみてください。404ページが見つかりません。正しい数字を取得してください。スラッシュが正しい単語に交換された後、他に何を入力してもかまいません。これははるかに便利です!

于 2012-08-26T18:37:39.617 に答える
3

user.phpユーザーIDの代わりにユーザー名を取るように変更する必要があります。次に、次のようなものを使用できます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]

uこれは、基本的にクエリ文字列パラメーターを介してユーザー名を渡します。/user.php?u=andrewliu

そうしないと、htaccess と mod_rewrite が user_id と username の間のマッピングを知る方法がありません。または、データベース スクリプトを作成し、 RewriteMapを使用してマッピングを作成することもできます。

RewriteMap usermap prg:/path/to/userscript

そしてあなたのhtaccessで:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=${usermap:$1} [L]

最後のオプションは、たとえば 5 人のユーザー (または少量) しかいない場合は、明示的な書き換えを行うことができます。

RewriteEngine On
RewriteRule ^/?andrewliu$ /user.php?u=1 [L]
RewriteRule ^/?anotheruser$ /user.php?u=2 [L]
RewriteRule ^/?foousername$ /user.php?u=3 [L]
于 2012-08-26T18:33:44.267 に答える
0

「u」の値を取得するには、PHP で $GET を使用します。

次に、ロジックを使用して名前に変換します。

リダイレクト機能を使用して、その URL に移動するだけです。

于 2012-08-26T18:33:10.707 に答える