YouTubeでフォルダを動的にする方法は?たとえば、次のようにルートディレクトリのユーザーチャネルにアクセスできます。
各チャンネルの新しいフォルダを作成することは明らかに彼らのアプローチではなく、次のリンクもあります。
これはhtaccess、Apacheを使用して行われますか、それともPHPを使用して行われますか? StackOverflowに連絡する必要がありますか?
答え1
これをURL書き換えと呼びます。 Apache設定で直接RewriteEngineを使用するか、.htaccessを使用してApacheでこれを実行できます(実際に違いはありません)。他の多くのWebサーバーでこれを行うことができます(私はパフォーマンスと設定が簡単なのでnginxが好きです)。
URLを書き換えるとき、URLの動的部分(例では、/後ろと2番目の/前のすべての項目が動的部分の1つ)を一部のサーバーサイド言語に渡される変数に割り当てます。 PHPを使用してもJSPを使用しても構いません)。その後、サーバーサイド言語ではこれは一般的なGETパラメータであり、これを操作できます。データベースから関連データを読み込むなどの操作を行うことができます。
たとえば、次のように書き直します。
^(.*)/(.*)$ /controller.php?user=$1&page=$2
その後、PHPでは、コードは次のようになります。
echo $_GET['user'];
以下を印刷します。
PewDiePie
答え2
これはシステムの物理的な物理ディレクトリではありません。これは、物理ディレクトリにマップしたり、関数またはアプリケーションのパラメータとして解釈して操作したりできるURL名前空間の動的名前です。
このような「魔法」を促進するのはURLの書き換えです。本当に気になる場合は、スクラップマガジンの次のチュートリアルを見てください。URL書き換えの紹介。
はい
あなたがウィキペディアだと想像してみてください。ウェブサイト全体は主にPHPに基づいているため、実際のURLは次のとおりです。
http://en.wikipedia.org/w/index.php?title=Barack_obama
ちなみにホームページにアクセスすると下記のページをご覧いただけます。
http://en.wikipedia.org/wiki/Barack_obama
これを達成するためのApacheの設定:
RewriteEngine On
#Look for the word "wiki" followed by a slash, and then the article title
RewriteRule ^wiki/(.+)$ w/index.php?title=$1 [L]
これにはブラウザがアクセスするURLが必要です。」http://en.wikipedia.org/wiki/Barack_obama「そして、Webサーバー(Apache)内で再構築してください。」http://en.wikipedia.org/w/index.php?title=Barack_obama」。
私はしばしばこれがスタートレックの万能翻訳機に似ていると思います。サーバーは入力時にブラウザーから一連のURLを取得し、バックエンドはこれらのURLをサーバーまたは他のサーバー上の実際のアプリケーションとスクリプトにマップされた別のURLに変換します。
答え3
なしですべてをリダイレクトするには、/
単純なAliasMatchを使用して次のことを達成できます。モジュールエイリアス):
AliasMatch ^/([^/]+) /path/to/handler.php
REQUEST_URI
その後、スクリプトで環境変数を確認して、表示するユーザーを処理できます。
/about
その後、処理などの追加作業があります。
AliasMatch ^/([^/]+)/(about|videos|blah) /path/to/handler.php
/x/y/z
または、上記のユーザー部分([^/]+
スラッシュではなく1つ以上の文字)と一致するように、2つのレベルのみを一致させることもできます(同様のパスは処理されません)。
AliasMatch ^/([^/]+)/([^/]+) /path/to/handler.php
REQUEST_URI
表示する内容を決定するには、もう一度使用してください。
これにより、ページURLは「現状のまま」提供されますが(ブラウザのアドレスバーのURLは変わりません)、コンテンツは/path/to/handler.php
。
これは2つの別々のルールです。/username
andを1つのルールとして扱う方法があるかもしれませんが、/username/something
最終的には読みにくいかもしれません。その後のすべての項目と一致することを避けるために、この方法で行われますdomain.com
。
スクリプトのパラメータへのパスを変更する必要がある場合は、次の場所にありますRewriteRule
。モードの書き換え)。アドレスバーにURLを保持するには、リバースプロキシクエリを実行する必要があります。
RewriteEngine On
RewriteRule ^/([^/]+) /path/to/handler.php?user=$1 [LP]
RewriteRule ^/([^/]+)/(about|videos|blah) /path/to/handler.php?user=$1&args=$2 [LP]
これにより、スクリプト処理時間が節約され、REQUEST_URI
PHPから変数を抽出できます。$_GET['user']
$GET['args']
同様に、AliasMatch
2番目のルールは次のとおりです。
RewriteRule ^/([^/]+)/([^/]+) /path/to/handler.php?user=$1&args=$2 [LP]
ただし、スクリプトは、両方のURLに一致するすべてのエントリに対して何をすべきかを知る必要があります。次のURLはあなたが望むものではないかもしれません。
/errors/404.html
/about/google.html
など。