0

次のような URL を受け付けています。

http://www.random.com/film/1

これで行う必要があるserver.phpのは、ベースディレクトリに送信してから、アドレスを展開し/、フィルムと 1 を変数として使用することです。

どうすればこれを達成できますか?

現時点では、そのリンクにはページが存在しないと書かれています!!

4

2 に答える 2

3

既に開いているので.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/filmorを使用すると、次の/api-v1/v1/film/ようになります。

Array
(
    [1] => api-v1
    [2] => v1
    [3] => film
    [4] => 
)
于 2013-04-14T23:37:21.707 に答える
2

この種のリダイレクトのファイルを確認する必要が.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";
}
于 2013-04-14T23:34:57.550 に答える