web-dev-qa-db-ja.com

.htaccess:GET変数が書き換えで失われる

どうやら、私の.htaccess書き換えは私のページ上のすべての_$_GET_-変数を使い果たしてしまいます:

URL http://192.168.1.1/welcome/test?getvar=true にアクセスし、index.phpファイルでvar_dump($_GET)を実行すると、次の出力が得られます。

_array
'/welcome/test' => string '' (length=0)
_

そのため、_$_GET_- dataは利用できず、URLからのgetvar変数の兆候もありません。

これが私の.htaccessです:

_RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
_

書き換えが意図したとおりに機能するが、_$_GET_- variablesに引き続きアクセスできるようにするには、何を変更する必要がありますか?

21
Industrial

「QueryString Append」オプションが必要です。

RewriteRule ^(.*)$ index.php?route=/$1 [QSA,L]

編集:正しいので、@ DonSebaの貢献を追加しました。

61
Kevin Stricker

細部の変更:

RewriteRule ^(.*)$ index.php?/$1 [L]

RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]

これで、すべてのルートが$ _GET ["route"]に表示されます

9
DonSeba
RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L]
1
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA]
</IfModule>

私のためにトリックをしました。

これでリクエストできます: http://www.mydomain.com/myapi?foo=xy&bar=ab

そしてリダイレクトされます: http://www.mydomain.com/my_real_api_file.php?foo=xy&bar=ab

あなたのAPIコードを隠すのに非常に役立ちます。

0
Colin