2

私の実際のURLは次のようになります。

http://mydomain.com/example.php?id=value1&name=value2

私にとって理想的なのは次のようなものです:

http://mydomain.com/example/value2

アイテムIDを表示したくありません。私は何時間もグーグルで検索しましたが、有用なものは何も見つかりませんでした. IDを渡したいのですが、URLに表示したくありません。このようなことは可能ですか?クライアントがページをロードした後、何らかの方法で URL を書き換えることはできますか?

IDを送信する必要がある場合、IDに合わせて名前の値を書き換えるにはどうすればよいですか? そのため、名前フィールドに指定された ID を持つアイテムに関連しない何かを入力すると、応答時に ID に関連付けられた名前の実際の値が取得されます。だからこれは私が意味するものです:

  • 実際のulrは次のとおりです。http://mydomain.com/example/123
  • 私が入力したもの:http://mydomain.com/randomtext/123
  • そして、私はまだ応答を受け取ります:http://mydomain.com/example/123

ここと同じように: http://www.theatlantic.com/magazine/archive/1939/03/what-makes-an-american/309021/ランダムなテキストに 変更what-makes-an-americanしても、同じページが表示されます。彼らはリダイレクトを使用していますか?それはロード時間に有害ではありませんか?

4

2 に答える 2

1

いいえ、ロード時間に害はありません

<IfModule mod_rewrite.c>
RewriteEngine On
# /var1/value2.html to /example.php?id=value1&name=value2
RewriteRule ^([^/]+)/([^\.]+)\.html$ /example.php?id=$1&name=$2
</IfModule>

答えはここにありました。

于 2012-09-22T16:48:49.550 に答える
0

これを.htaccessファイルとして保存します。

RewriteEngine On
RewriteBase /

RewriteCond $1 !^index\.php
RewriteRule ^(.*)/$ index.php/$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [QSA,L]

次に、REQUEST_URIサーバー変数を使用してURLコンポーネントを取得できます。

たとえば、http://mydomain.com/example/value2

$var = split('/', $_SERVER['REQUEST_URI']);

$var becomes array('example', 'value2');
于 2012-09-22T16:48:39.323 に答える