web-dev-qa-db-ja.com

書き換えルールでオプションのURLパラメーターを渡すにはどうすればよいですか?

urlのGET値が定義されているかどうかを識別するCMSを作成し、定義されている場合は、index.phpのフロントエンドテンプレートからページのhtmlコンテンツを返します。これは理想的には、PHPをあまり知らない人が使用できるテンプレートシステムを作成し、PHPを知っている場合は拡張できるようにすることです。

すべてこのhtaccessで問題なく動作しました。次のhtaccessはhttp://localhost/index.php?url=(page)http://localhost/(page)に変換します。

RewriteEngine On

RewriteRule ^(|/)$ index.php?url=$1
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1

ただし、GET url endが設定されているかどうかを識別するためにCMSを拡張しました。値がバックエンドであり、$_GET['url']の値が定義されていない場合、値はインデックスであると見なされます。値が定義されている場合、その値を使用してそのファイルをフェッチします。 htaccessで次のことを実行したい:

  1. 最初のパラメーターがbackendの場合、http://localhost/index.php?end=backend&url=manage-pagesからhttp://localhost/backend/manage-pagesのURLを作成します。

  2. backend以外の場合は、http://localhost/index.php?url=(page)からhttp://localhost/(page)に変換します。

1
Intact Dev

書き換えルールで QSAフラグ を使用する必要があります。元のURLのクエリ文字列を保持し、新しいURLに追加します。書き換えルールは次のようになります。

RewriteRule ^(|/)$ index.php?url=$1 [QSA]
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1 [QSA]
1