私は自分のアプリケーションを設計しています。そして私は次のものを作るべきです。 mod_rewriteの助けを借りてすべてのGETパラメータ(?var = value)は/ var/valueに変換する必要があります。これどうやってするの?私はFrontControllerパターンを使用しているので、1つの.phpファイル(index.php)しか持っていません。あなたはこのmod_rewriteルールで私を助けることができますか?
私の英語を残念に思っています。前もって感謝します。PHPはすべてmod_rewriteでGETパラメータを
答えて
私は、「親しみやすい」URLを使用するサイトでこれを行います。 .htaccessファイルで
:index.phpの上次に
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
:
if ($_SERVER['REQUEST_URI']=="/home") {
include ("home.php");
}
.htaccessのルールはを求めたファイルまたはディレクトリが見つからなかった場合はindex.phpをロードするよう指示します。次に、リクエストURIを解析して、index.phpが何をすべきかを決定します。
美しい。これはまさに私が必要としていたものです。 – Qix
AFAIK mod_rewriteは疑問符の後にパラメータを扱いません - regexpの書き換え規則の行末は '?'の前のパスの終わりと一致します。つまり、パラメータを渡すこと、または書き換えの際にパラメータを完全に削除することにかなり制限されています。
の.htaccess
RewriteEngine On
# generic: ?var=value
# you can retrieve /something by looking at $_GET['something']
RewriteRule ^(.+)$ /?var=$1
# but depending on your current links, you might
# need to map everything out. Examples:
# /users/1
# to: ?p=users&userId=1
RewriteRule ^users/([0-9]+)$ /?p=users&userId=$1
# /articles/123/asc
# to: ?p=articles&show=123&sort=asc
RewriteRule ^articles/([0-9]+)/(asc|desc)$ /?p=articles&show=$1&sort=$2
# you can add /? at the end to make a trailing slash work as well:
# /something or /something/
# to: ?var=something
RewriteRule ^(.+)/?$ /?var=$1
最初の部分が受信されるURLです。 2番目の部分は書き換えられたURLで、$_GET
を使用して読み取ることができます。 (
と)
の間のすべてが変数として認識されます。最初は$1
、次は$2
となります。こうすることで、書き換えられたURLのどこに変数を置くべきかを正確に判断し、それによって検索する方法を知ることができます。
(.+)
を使用すると、非常に一般的なままで「すべて」を許可できます。これは、単に1つまたは複数の文字()(.
)を意味します。または、より具体的に、たとえば桁数:[0-9]+
(0〜9の範囲内の1つ以上の文字)のみを許可します。 http://www.regular-expressions.info/には、正規表現に関するさらに多くの情報があります。そして、これをテストするには良いサイトです:http://gskinner.com/RegExr/。
.htaccess内の次のコードは、あなたのURLを例えば次のように書き換えます。 /api?other=parameters&added=true
〜/?api=true&other=parameters&added=true
RewriteRule ^api/ /index.php?api=true&%{QUERY_STRING} [L]
これはまさに私が探していたものです!ありがとう! – Aaron
- 1. mod_rewriteでGETパラメータを渡す
- 2. GETパラメータ付きmod_rewrite
- 3. PHP getパラメータを与えるmod_rewriteが機能しない
- 4. Apache Mod_rewriteを使用してGETパラメータを保持したままPHP拡張モジュールを削除する方法は?
- 5. GETフォームのmod_rewrite
- 6. mod_rewrite help - GET request
- 7. mod_rewriteルール特定のGETパラメータを末尾に移動する
- 8. getパラメータでgetパラメータを渡す
- 9. XMLパラメータ(PHP cURL)でGETリクエストを実行
- 10. ワードプレス:mod_rewriteの最初の「フォルダ」の名前GETパラメータ
- 11. PHP:有効なGETパラメータ
- 12. PHP +文字エンコード+ GETパラメータ
- 13. スリムなPHPとGETのパラメータ
- 14. PHP/Ajax - 複数のGETパラメータ
- 15. Retrofit 2.0 GET @QueryパラメータはPHPの$ GET [""]に渡されません。
- 16. すべてのGETパラメータをNginxのメインインデックスファイルから削除する
- 17. PHPスクリプトからローカルPHPスクリプトを起動し、GETパラメータを渡す
- 18. GETでパラメータを取得し、POST(PHP)で送信する
- 19. mod_rewriteルールが$ _GET PHPパラメータを送信しない
- 20. nginx各GETパラメータの前にPHPスラッシュ
- 21. PHP .htaccessのmod_rewriteを
- 22. PHPファイルブラウザmod_rewrite
- 23. PHP - mod_rewriteの
- 24. mod_rewrite for phpダウンロードリンク
- 25. PHP mod_rewriteアンカー
- 26. TYPO3 userFuncはGETパラメータをPHPファイルに与えます
- 27. XMLデータをGETパラメータで送信するPHP Curl
- 28. パラメータを無視してREST GET PHP Symfony 3 Mpdf
- 29. mod_rewriteとエンコードされたパラメータ
- 30. はGETを通じてフォームを送信し、既存のGETパラメータにすでに
あなたとあなたのユーザーの両方にとって恐ろしいことです。通常は、パスをコンテンツを指定するように見せても、他のパラメータだけを残しておくことをお勧めします。例えば、/content.php?id = 5の代わりに、/ content/5を指定することができます。あなたは何かのためのいくつかのオプションがある場合は、/ content/5 opt1 = something&opt2 = somethingのようなことをしたいかもしれません。 – Brad