メンバーがいて、ログインすると に移動するmysite.php/id=username
とします。ユーザー名は、実際のユーザー名によって常に異なります。
mod の書き換えで 1 行を使用して id= を削除し、ユーザー名だけを残すことはできますか? どうすればいいですか?
例: mysite.php?id=john
- 私はそれがmysite/john
であり、他の人も同じであることを望みます。
メンバーがいて、ログインすると に移動するmysite.php/id=username
とします。ユーザー名は、実際のユーザー名によって常に異なります。
mod の書き換えで 1 行を使用して id= を削除し、ユーザー名だけを残すことはできますか? どうすればいいですか?
例: mysite.php?id=john
- 私はそれがmysite/john
であり、他の人も同じであることを望みます。
あなたに書き直す/mysite/john
には、/mysite.php?id=john
次を使用します:
RewriteBase /
RewriteRule ^mysite/([^/]+) mysite.php?id=$1 [L]
このルールは、http: //htaccess.madewithlove.be/でテストできます。
これには使用できませんmod_rewrite
。試すことができます(これも有効になっmod_substitute
ていることを確認してください):mod_filter
AddOutputFilterByType SUBSTITUTE text/html
Substitute s|/?index\.php\?id=([a-zA-Z0-9_-]+)|/index/$1/|i
これがうまくいくかどうかはわかりませんが、テストしていません。
次に、次を使用できますmod_rewrite
。
RewriteBase /
RewriteRule ^index/([a-zA-Z0-9_-]+) index.php?id=$1 [L]
アップデート:
index.php?id=username
アドレスバーフォームの URL を次のように変更しようとしている場合は、質問を誤解していると思いますindex/username
。
RewriteCond %{QUERY_STRING} ^id=([a-zA-Z0-9_-]+)$
RewriteRule ^index\.php$ index/%1/? [R,L]
もちろん、これを行うだけです:
RewriteRule ^mysite/([A-za-z0-9-]+).php$ mysite.php?id=$1 [L]
これは、ユーザー ID が文字 (大文字と小文字)、数字、またはダッシュであることを前提としています。適切な正規表現に文字を追加します。もちろん.+
何に合わせてもいいんですけど、僕はあまりオープンなものは好きじゃないんです。
試してみてください:
RewriteRule ^([a-zA-Z0-9\-_]+).php$ mysite.php?id=$1 [L]