これが私の書き換えルールです
RewriteRule ^(.+)$ index.php?uri=$1 [QSA,L]
このURLに行くと
http://localhost/ub/ab?uri=cd
$_GET['uri']cd代わりに、を返しますab。
$_GET['uri']返品を受け取る方法はab?それとも、これはQSAの実際の動作ですか?
ありがとう、
編集
.htaccessファイルはディレクトリubにあり、abディレクトリは存在しません。
$ _GETを使用してuriパラメーターを取得しないでください-.htaccessルールはスクリプトに提示されるURIをオーバーライドしないため、解析することでURIの「ab」部分を取得できます$_SERVER['REQUEST_URI']。
Joomla!などのいくつかのPHPアプリケーションを見てきました。Magento-.htaccessファイルはすべてを「index.php」にリダイレクトし、それをPHPルーティングコードに任せて、URIを表示するページに変換します。
あなたの場合$_GET['uri']は本当にcdのため?uri=cdです。abはURLの一部であり、GETクエリの一部ではありません。
これは、アクセスするアドレス( )uri=の両方でGETクエリパラメータを定義したために発生すると思います。2番目のものによって上書きされます。RewriteRule ^(.+)$ index.php?uri=$1 [QSA,L]http://localhost/ub/ab?uri=cd
見て:
http://localhost/ub/ab?uri=cd(クエリ文字列は?uri=cd)index.phpでURLを追加します(> )uriindex.php?uri=ub/abQSA)クエリ文字列を追加します。index.php?uri=ub/ab&uri=cd したがってuri=、最終リクエストで2回配置され、2番目のリクエストで上書きされます。
GETuriパラメータの1つを名前変更するだけです。
以前のクエリ文字列を無視/上書きするには、次のようなRewriteRuleを使用します。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?uri=$1 [L]