私は自分のアプリケーションを設計しています。そして私は次のものを作るべきです。 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. Apache Mod_rewriteを使用してGETパラメータを保持したままPHP拡張モジュールを削除する方法は?
- 4. mod_rewrite help - GET request
- 5. GETフォームのmod_rewrite
- 6. getパラメータでgetパラメータを渡す
- 7. PHP +文字エンコード+ GETパラメータ
- 8. スリムなPHPとGETのパラメータ
- 9. PHP:有効なGETパラメータ
- 10. ワードプレス:mod_rewriteの最初の「フォルダ」の名前GETパラメータ
- 11. PHPスクリプトからローカルPHPスクリプトを起動し、GETパラメータを渡す
- 12. XMLデータをGETパラメータで送信するPHP Curl
- 13. に、RedirectMatch 301は、GETパラメータを
- 14. PHPを使用してURLにURLを渡す方法(GETパラメータとして)
- 15. php file_get_contentsはすべてのパラメータを送信しません
- 16. PHP .htaccessのmod_rewriteを
- 17. WEBAPI 2 GETパラメータ
- 18. オプションGETパラメータ
- 19. PHPファイルブラウザmod_rewrite
- 20. mod_rewrite for phpダウンロードリンク
- 21. PHP mod_rewriteアンカー
- 22. PHP - mod_rewriteの
- 23. GETリクエストにパラメータを渡す
- 24. ASMX HTTP GETパラメータは、C#キーワード
- 25. 有効なリンクはGETパラメータ
- 26. 動的パラメータを使用するhtaccess mod_rewrite
- 27. 特殊文字を含むテキストをPHPのgetパラメータとして渡します
- 28. RestTemplate要求パラメータでGETリクエスト
- 29. Ruby CurbでGETパラメータを渡す
- 30. mod_rewriteはすべての.pdfリクエストをキャッチします
あなたとあなたのユーザーの両方にとって恐ろしいことです。通常は、パスをコンテンツを指定するように見せても、他のパラメータだけを残しておくことをお勧めします。例えば、/content.php?id = 5の代わりに、/ content/5を指定することができます。あなたは何かのためのいくつかのオプションがある場合は、/ content/5 opt1 = something&opt2 = somethingのようなことをしたいかもしれません。 – Brad