1

これはおそらく非常に簡単な質問です。とにかく、リクエストなしで URL から変数を使用するにはどうすればよいですか。例えば:

www.mysite.com/get.php/id/123

次に、ページはデータベースから ID 123 を取得します。

これはどのように行われますか?前もって感謝します!

アップデート

次の構造がある場合:

support/
        sys/
            issue/
                  issue.php
            .htaccess
            home.php
            etc.....

以下を含む .htaccess ファイルを使用:

RewriteEngine On 
RewriteRule ^/issue/(.*)$ /issue/issue.php?id=$1 [L]

次のように入力する必要があるのはなぜですか。

http://www.mysite.com/support/sys/issue/issue/1234

ファイルをロードするには?入力したいとき

http://www.mysite.com/support/sys/issue/1234

また、ファイルがロードされたら、どうすればIDを取得できますか?

4

7 に答える 7

2

問題

.htaccessこれは、ルールが実際に存在するディレクトリを含む URL を書き換えているという事実に起因する、非常に基本的/一般的な問題です...

ファイル構造

>support
    >sys
        >issue
            issue.php
        .htaccess

(つまり、ディレクトリissue.htaccessファイルは同じディレクトリにあります: sys)

書き直しの問題

それで:

RewriteEngine ON
RewriteRule ^issue/(.*)/*$ issue/issue.php?id=$1 [L]
# Note the added /* before $. In case people try to access your url with a trailing slash

動作しないでしょう。これは (注: ->= リダイレクト先):
http://www.mysite.com/support/sys/issue/1234
-> http://www.mysite.com/support/sys/issue/issue.php? id=1234
-> http://www.mysite.com/support/sys/issue/issue.php?id=issue.php

例/テスト

var_dump($_GET)と次の URLで試してください。

出力は常に次のようになります。

array(1) { ["id"]=> string(9) "issue.php" } 

解決

次の3 つの主なオプションがあります。

  1. 実際のファイルがリダイレクトされないという条件を追加
  2. 数字のみを書き換えます。たとえば、書き換えますが、書き換えissue/123ません。issue/abc
  3. 両方を行う

方法 1

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^issue/(.*)/*$ issue/issue.php?id=$1 [L]

方法 2

RewriteEngine ON
RewriteRule ^issue/(\d*)/*$ issue/issue.php?id=$1 [L]

方法 3

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^issue/(\d*)/*$ issue/issue.php?id=$1 [L]

ID の取得

これは単純な部分です...

$issueid = $_GET['id'];
于 2013-09-29T23:45:49.700 に答える
0

というファイルを使用する必要が.htaccessあり、Google で検索すると、それを実現する方法の例がたくさん見つかります。

于 2013-09-29T20:38:31.303 に答える
0

に書き換えるにはmod_rewrite (またはプラットフォーム上の同等のもの)が必要です。/get.php/id/123/get.php?id=123

于 2013-09-29T20:39:19.877 に答える
0

の使用についてあなたに言及した回答がないのはなぜだろうかRewriteBase

Apacheマニュアルに従って:

RewriteBase ディレクティブは、相対パスを置き換えるディレクトリごと (htaccess) の RewriteRule ディレクティブに使用される URL プレフィックスを指定します。

で使用RewriteBaseすると/support/sys/issue/.htaccess、コードは次のようになります。

RewriteEngine On
RewriteBase /support/sys/issue/

RewriteRule ^([0-9+)/?$ issue.php?id=$1 [L,QSA]

次に、issue.phpあなたができることは次のとおりです。

$id = $_GET['id'];

URL から ID を取得します。

于 2013-09-30T04:19:40.430 に答える