7

私のウェブサイトには、登録されたチューターへのリンクがあります。そのリンクはこのようなものです

http://www.myweb.com/profiles/tutors/index.php?tutorCode=1285&tutorName=Robert%20Sakoo&city=Sidny

したがって、このリンクを次のように書き直す必要があります。

www.myweb.com/1285/Rober Sakoo

上記の元のURLを予想されるURLに書き換えることは可能ですか?

4

2 に答える 2

16

URL と書き換えがどのように機能するかについて混乱しているようです。this2this1に書き換える必要がある」という概念は、次のことを意味します。

  1. 誰かがアドレスバーにthis2を入力するか、 this2リンクをクリックします。
  2. サーバーはthis2の要求を認識します
  3. サーバーには、リクエストをthis2からthis1に内部的に書き換える一連のルールがあります。
  4. this1はブラウザに提供されます

これらすべての重要な概念は、ブラウザが "this2" リンク要求し、サーバーがその要求を "this1" に内部的に書き換えることです。しかし、これはおそらくあなたが望むものではありません。なぜなら、醜い URL を取り込んで見栄えの良い URL に書き直すことになり、親しみやすい URL の要点が失われるからです。

特にこのあたりでは、「この URL をこの URL に変更したい」などの問い合わせや、2 段階のリダイレクト プロセスがある場合の書き換えの依頼が多すぎます。これは、 this1 を取得してブラウザthis2にリダイレクトし、URL アドレス バーがthis2に変更される 2 番目のステップ (まったく要求していません)です。

  1. 誰かがアドレスバーにthis1を入力するか、 this1リンクをクリックします。
  2. サーバーはこれに対する要求を認識します1
  3. サーバーには、ブラウザーを外部からthis2にリダイレクトする一連のルールがあります。
  4. ブラウザのアドレスバーには、これが表示されるようになりました2
  5. ブラウザはこれを要求します2
  6. サーバーはthis2の要求を認識します
  7. サーバーには、リクエストをthis2からthis1に内部的に書き換える一連のルールがあります。
  8. this1はブラウザに提供されます

したがって、このラウンドアバウト畳み込み全体は、ブラウザーがthis1にアクセスしようとすると、this2にリダイレクトされますが、実際にはthis1からコンテンツが提供されます。

だから私はこれがあなたが望むものでなければならないと思います。これをhtaccessファイルに入れてみてください:

RewriteEngine On

# check if the actual request if for "this1"
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /profiles/tutors/index.php\?tutorCode=([0-9]+)&tutorName=([^&]+)&?([^\ ]+)
# redirect to "this2"
RewriteRule ^profiles/tutors/index\.php /%1/%2/?%3 [R=301,L,NE]

# now rewrite "this2" back to "this1"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/(.+)/$ /profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [L,QSA]

cityパラメータはフレンドリ URL でエンコードされないため、クエリ文字列の一部として残されることに注意してください。分かりやすい URL が次のようになるようにこれを変更でき/id/name/city/ます/id/name/

于 2012-07-29T18:46:08.120 に答える
1

それはどこかに近いでしょう:

RewriteEngine on
RewriteRule ^([0-9]+)/(.+)$ /profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [NC,QSA]

あなたはそれについて何をすべきかを指定していないので、私はあなたのcityパラメーターを考慮しませんでした、それでQSAルールに追加され(クエリ文字列追加)、GETのパラメーターはまだスクリプトに渡されます。

于 2012-07-29T13:40:25.743 に答える