6

URLで3つの変数を渡す必要がありますが、スラッシュを使用します。たとえば、次のURLを使用します。

http://www.example.com/variable1/variable2/variable3

HTACCESSにこれがあり、最初の変数の後のテキストを渡すことができますが、&$ 2を追加しても、他の2つを通過させることができません。

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2 [QSA,L]

リンクやヘルプは素晴らしいでしょう

4

2 に答える 2

6

次の方法で、.phpファイルのパラメーターを取得する方が簡単な場合があります。

$pathinfo = isset($_SERVER['PATH_INFO'])
    ? $_SERVER['PATH_INFO']
    : $_SERVER['REDIRECT_URL'];

$params = preg_split('|/|', $pathinfo, -1, PREG_SPLIT_NO_EMPTY);

echo "<pre>";
print_r($params);

したがって、これを使用してスクリプトを呼び出します。

http://www.example.com/variable1/variable2/variable3

戻ります:

Array
(
    [0] => variable1
    [1] => variable2
    [2] => variable3
)

これは両方で機能します:

http://www.example.com/variable1/variable2/variable3および http://www.example.com/process.php/variable1/variable2/variable3

于 2012-09-01T16:21:21.230 に答える
6

書き換えルールでキャプチャしている変数は1つだけです。

次のようなものが必要です。

RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]

または、少し短い:

RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L]

\w単語文字には、文字、数字、アンダースコアが含まれます)

エンディングスラッシュのみをオプションにしたので、この書き換えルールは、変数が3つしかない場合にのみ何かを実行します。

于 2012-09-01T15:57:19.127 に答える