次のような URL を受け付けています。
http://www.random.com/film/1
これで行う必要があるserver.php
のは、ベースディレクトリに送信してから、アドレスを展開し/
、フィルムと 1 を変数として使用することです。
どうすればこれを達成できますか?
現時点では、そのリンクにはページが存在しないと書かれています!!
既に開いているので.htaccess
、Apache 用に次のようなファイルを作成します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?(.*)$ server.php?1=$1&2=$2&3=$3&4=$4 [NC,QSA,L]
</IfModule>
コメントに基づいて最初の回答から大幅に変更されたため、現在ここにあるものと PHP にあるものを要約すると
/api-v1/v1/film/1
、次のようになります$_GET
。
Array
(
[1] => api-v1
[2] => v1
[3] => film
[4] => 1
)
この場合、4 番目のパラメーター1
はオプションであり、省略して/api-v1/v1/film
orを使用すると、次の/api-v1/v1/film/
ようになります。
Array
(
[1] => api-v1
[2] => v1
[3] => film
[4] =>
)
この種のリダイレクトのファイルを確認する必要が.htaccess
あり、他のリストとまったく重複していません。
ファイル.htaccess
内:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)$ server.php?$1=$2 [L]
RewriteRule ^([^/]+)$ server.php?$1 [L]
でserver.php
:
$parameterName = 'film';
$parameterValue = isset($_GET[$parameterName]) ? $_GET[$parameterName] : NULL;
if (!is_null($parameterValue)) {
echo "Parameter found";
} else {
echo "Parameter not found";
}