.htaccessファイルを使わない

.htaccessファイルを使わない

InstagramやFacebookのようなソーシャルプラットフォームを作成しようとしており、ユーザーにexamplesite.com/usernamehereのようなユーザー名をURLで表示したいと考えています。これを行う方法を調べていたところ、htaccessの書き換えコードで作成できることを知りました。コードがあります

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ user.php?url=$1 [QSA,L]

通常は動作しますが、たとえば、examplesite.com/login または登録ページにアクセスしようとすると、rewriterules は login または register という単語をユーザー名と認識し、ページが開きません。フォルダーが開いている必要があり、サーバー上の css、scss、js、img などのフォルダーもユーザー名として取得する必要があるため、examplesite.com/css、img、js などの単語が URL に書き込まれると、css、img、js ファイルが開かれることはありません。

英語が下手ですみません。みなさんありがとう!<3

答え1

さまざまなこと:

.htaccessファイルを使わない

.htaccessファイル内のコードが何度もコピーされるという、善意に基づいた例が数多くあります。カーゴカルトシステム管理者 代わりに実際のマニュアルを読むべきです。

から:https://httpd.apache.org/docs/2.4/howto/htaccess.html

一般的に、.htaccessメインのサーバー設定ファイルにアクセスできない場合にのみファイルを使用する必要があります。たとえば、ユーザー認証は常に.htaccessファイルで行うべきだという誤解がよくありますが、最近では、mod_rewriteディレクティブに関するもう一つの誤解しなければならないファイルに入ります .htaccessこれは単純に事実ではありません。...
RewriteRule
ディレクティブの場合、.htaccessコンテキストこれらの正規表現は、ディレクトリへのリクエストごとに再コンパイルする必要がありますが、メイン サーバーの構成コンテキストでは、一度コンパイルされてキャッシュされます。さらに、ルール自体はより複雑で、ディレクトリごとのコンテキストとmod_rewriteに伴う制限を回避する必要があります。書き換えガイド この件に関する詳細については。

2番目:

マッピングから除外する必要があるディレクトリ名がいくつかすでに言及されていますexample.com/[user-alias]

サインアップ ページで、ユーザーが意図的にこれらのディレクトリ名 (およびその他の名前) をユーザー エイリアスとして選択することを禁止することも忘れないでください。

最後

RewriteCondディレクティブは、次の対象となるリクエストの種類を制限するために使用されますRewriteRule

RewriteRule現在、設定では、「平易な」英語で、リクエストのファイル名コンポーネントと同じ名前の既存のファイルまたはディレクトリがある場合は、以下を適用しないよう指示されています。

追加の行を使用して、これに追加の条件を追加するだけです。RewriteCond次に例を示します。

RewriteCond %{REQUEST_FILENAME} !"login"

除外すべきexample.com/login

関連情報