get変数をデータベース(ユーザー名)の値に変更するために.htaccessを使用することになっているのではないかと思っていました。
だからもしあれば
http://www.url.com/user.php?u=1
どのようにそれを変換しますか
http://www.url.com/andrewliu
ありがとう!
Mod-ReWriteを使用する必要があります。これはhtaccessファイルで使用できますが、httpd.confファイルにアクセスできる場合は、より高速であることがわかります。
理想的には、htaccessファイルで?u = 1を使用し、それを使用して名前を検索し、名前を末尾に追加します。そうしないと、ユーザー名を検索する必要があり、スペルミスなどが発生する可能性があります。
RewriteRule ^/([0-9]+)/.*$ /user.php?u=$1 [L]
これがStackoverflowのやり方です。URLに番号を付けずにこのページにアクセスしてみてください。404ページが見つかりません。正しい数字を取得してください。スラッシュが正しい単語に交換された後、他に何を入力してもかまいません。これははるかに便利です!
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]
「u」の値を取得するには、PHP で $GET を使用します。
次に、ロジックを使用して名前に変換します。
リダイレクト機能を使用して、その URL に移動するだけです。