0

誰かが私を助けてくれることを願っています.htaccessの微調整がまったく苦手なので.

PHPベースのサイトを開発しています。このサイトでは、クエリ文字列に基づいて特定のページを含めています

例: index.php?q=somePage。

.htaccess で、たとえば/somepage/を探し、サーバーにq=somePageをロードするように指示します。これが完了すると、サーバーは他のすべてのクエリ文字列を URL から削除するため、それらは渡されません。

ここで質問ですが、.htaccess を設定して[q]パラメータをキャッチし、他のすべてのクエリ文字列 (サーバー側) を渡す方法はありますか?

例: /somepage¶meter=someparameterまたは/somepage/¶meter=someparameterを呼び出すと、サーバーは URL を/somepage/に書き換えますが、次のようにページ (サーバー側) を呼び出します。

index.php?q=somePage¶meter=someparameter

これが私のhtaccessが今どのように見えるかです:

Options +SymLinksIfOwnerMatch
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?q=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?q=$1

そうでない場合は、パラメーターをセッションに保存して、そのように渡す必要があると思います。しかし、誰かが助けてくれることを願っています:)

PS: htaccess を扱い、私を完全な n00b から専門家に導くことができる本を知っているなら、正しい方向に私を向けることができれば、それは壮大です. 同じことが実際にはregExにも当てはまります;)

4

1 に答える 1

0

通常の多くのフレームワークは、PHP内でリクエストを解析するロジックを移動します

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

URL がファイルまたはディレクトリを識別しない場合は、それを index.php に渡します。

EDIT http://www.zytrax.com/tech/web/regex.htmで regexp の紹介を参照できますが、htaccess はすべてのパラメーターを PHP のインデックスに渡すことを提案しています。

phpinfo()を使用します。リクエストが PHP によってどのように認識されるかを確認する

ここでのリクエストとしてindex.php

<?php
phpinfo();

ここでいくつかのクエリを試すことができます(ローカルホストのルートにあるコードだと思います):

http://localhost/
http://localhost/test
http://localhost/a/b
http://localhost/?p1=v1&p2&v2&p3&p4
http://localhost/a/b?p1=v1&p2&v2&p3&p4
http://localhost/a/b/?p1=v1&p2&v2&p3&p4
于 2012-06-16T07:38:33.037 に答える