ルールを定義した方法により、複雑さが増しました。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
上記の規則は、ファイル名がそのままファイル処理のディレクトリである場合を意味します。その後、それ以上処理しないでください。
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC]
このルールは、任意のリクエスト uri をマップすることを意味しますprofile.php?u=
これをリクエスト/
するとwww.website.com
、最初のルールがチェックされ、一致しません。次に、2 番目のルールをチェックし、それを にマップしprofile.php?u=
ます。
$_GET['u']
それを修正する 1 つの方法は、 *if is empty または/
in をチェックすることprofile.php
です。ある場合は、をロードしindex.php
ます。
もう 1 つの方法は、ユーザー名の適切な正規表現を見つけて、ここで使用することです。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(USERNAME_REGEX)$ http://www.website.com/profile.php?u=$1 [NC,L]
これを処理する最善の方法は、PHP を使用することです。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?uri=$1 [L]
index.php
これで、渡したすべての uri が取得されます。これで、URI を で処理できますindex.php
。