1

情報

私は現在、自分のウェブサイトをより SEO フレンドリーにするため、インデックス ページで次の$_GET['']リクエストを受け付けています。

example.com/Variable1/staticword/Variable2

example.com/Variable1/staticword/Variable2/Variable3/

example.com/Variable1/staticword/Variable2/Variable3/Variable4

example.com/Variable1/staticword/Variable2/Variable4

例を挙げて

example.com/Arsenal/vs/Chelsea

example.com/Arsenal/vs/Chelsea/Emirates/

example.com/Arsenal/vs/Chelsea/Emirates/3048

example.com/Arsenal/vs/Chelsea/3048

問題

/vs/この場合、URLに「ダミー」ディレクトリを含めることは可能ですか? または、ユーザーが好きなものに変更できず、Web サイトがまだ機能するように、別の変数として使用する必要がありますか? のようなwww.example.com/Arsenal/ANYTHINGUSERWANTSHERE/Chelsea

どちらの場合も、複数の変数に対して htaccess ファイルを機能させるのに苦労しています。

(また、両方のケースの最後の例に関して、ユーザーが Variable3 / Stadium 値をスキップできるようにする方法は、そこにある可能性のある変数が投稿 ID であるため、簡単なチェックを実行して $_GET かどうかを確認できますは整数かどうか)

ありがとうございました!そして、質問はできるだけ早く回答されます。

4

1 に答える 1

1

example.com/Variable1/staticword/Variable2/Variable4ディレクトリ構造のURLです。変数部分を正規表現 (([^/]+)たとえば) に一致させ、静的部分を文字だけに一致させるだけです。これらはすべて内部で書き換える必要があります。最初に最も複雑な URL 構造に一致する必要があり、そこから下に向かって作業します。リクエストを処理するファイルに書き換えます。

最も簡単な方法は、ケースごとに個別のルールを用意することです。その場合、すべてのリクエストに一致するためだけにクレイジーな正規表現を作成する必要がないからです。

次のルールはテストされていませんが、機能するはずです。

RewriteEngine on
RewriteBase /
RewriteRule ^([^/]+)/vs/([^/]+)/([^/]+)/([0-9]+)/?$ /path/to/file.php?var1=$1&var2=$2&place=$3&id=$4 [L]
RewriteRule ^([^/]+)/vs/([^/]+)/([0-9]+)/?$ /path/to/file.php?var1=$1&var2=$2&id=$3 [L]
RewriteRule ^([^/]+)/vs/([^/]+)/([^/]+)/?$ /path/to/file.php?var1=$1&var2=$2&place=$3 [L]
RewriteRule ^([^/]+)/vs/([^/]+)/?$ /path/to/file.php?var1=$1&var2=$2 [L]

一致しないようにするために、各ルールの前に次の RewriteCond(ition) を追加する必要がある場合があります/path/to/file.php

RewriteCond %{REQUEST_URI} !^/path/to/file\.php$

詳細については、ドキュメントを参照してください。

于 2013-10-27T20:59:59.420 に答える