0

サブディレクトリ内の複数の URL を処理する単一の PHP ファイルが必要です。

たとえば、私のサイトはhttp://www.startingtofeelit.com/です。playlist.phpユーザーがhttp://www.startingtofeelit.com/playlist/101にアクセスしたとき、またはhttp://www.startingtofeelit.com/playlist/142などにアクセスしたときに処理する1 つの php ファイルが必要です。変数 (プレイリスト ID) として使用する番号 (上記の URL の例では 101、142) を取り除いて、正しいプレイリストを表示できるようにしたいと考えています。

プレイリストのサブディレクトリに を作成し、http://www.startingtofeelit.com/playlist?id=102 のような変数を使用してその方法で ID を取得できることはわかっていますindex.phpこれは見栄えが悪いので、そうしたいです。他の方法でそれを行う方法を知ることができます。GET

私のサイトは WordPress で構築されていますが、これによって違いが生じるとは思いません。

4

2 に答える 2

2

これは通常、すでに試した方法と同様の方法で処理されます。ただし、アプリケーションが次のようなクリーンな URL を受け入れるように、書き換えスクリプトを使用するのが一般的です。

http://www.startingtofeelit.com/playlist/142

...そして、アプリケーション用に次のように書き直します。

http://www.startingtofeelit.com/playlist?id=142

たとえば、Apache Web サーバーを使用していて、mod_rewrite モジュールをインストールして有効にしている場合は、.htaccess ファイルで次のスニペットを使用し、方法を既に知っていることを示したように GET パラメーターを使用できます。他の一般的な Web サーバーには、同じことができる独自の URL 書き換えモジュールがあります。

<IfModule mod_rewrite.c>
RewriteEngine On
# Rewrite this:
# http://www.example.com/somepage/1
# ...into this:
# http://www.example.com/somepage?id=1
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
于 2013-09-16T02:58:04.700 に答える
2

まあ、これは PHP だけでは実現できません。

  • Apache を使用している場合は、.htaccess を使用できます
  • IIS を使用している場合は、URL 書き換えを使用できます。

これらのモジュールの背後にある基本的な考え方は、ある URL から別の URL へのマッピングです。例:あなたはからマッピングしたいでしょう

http://www.startingtofeelit.com/playlist/142 =>
http://www.startingtofeelit.com/playlist.php?id=142

URL マッピングは正規表現で表現できます。たとえば、.htaccess (Apache) で。このように書くことができます

RewriteRule    ^playlist/([0-9]+)/?$    playlist.php?id=$1

Web サイトのディレクトリに .htaccess ファイルが必要であることに注意してください。WordPress を使用しているため、.htaccess が存在する可能性が高くなります。そのコード行を既存の .htaccess に追加するだけです

正規表現の説明は次のとおりです。

^playlist/      # any URL start with playlist/
([0+9]+)        # following by number, and store it as $1
/?$             # end with or without /

へのマッピング

playlist.php?id=$1  # where $1 is taken from the matched number from our pattern.
于 2013-09-16T02:45:42.907 に答える