3

2 つのクエリ文字列パラメーターを持つページの URL を書き換えようとしています。そして、これらのパラメータの値 (設定されているかどうか) に応じて、ページにさまざまなコンテンツを表示します。

example.com/fotograf.php?aid=10
example.com/fotograf.php?aid=10&fid=5

上記の URL は、書き換えられていない例です。私はそれらをそのようにしたいだけです

example.com/fotograf/10/
example.com/fotograf/10/5/

最初の URL は写真を含むアルバムへのリンクで、2 番目の URL はそのアルバム内の写真へのリンクです。

では.htaccess、上記のクリーンな URL でアクセスできるようにしたいだけです。その後、スクリプトの先頭にある URL を確認し、クリーンでない場合は、作成した関数を使用してクリーンな URL にリダイレクトします (preg_match と preg_split で値を取得し、ヘッダー関数でリダイレクトします)。

これまでのところ、次のルールを試しました (アルバムを表示するには機能しませんでした)。

RewriteRule ^fotograf/([0-9-/]+)/([0-9]+)/?$ fotograf.php?aid=$1&fid=$2 [L]

次に、これ(常にアルバムにリダイレクトされます):

RewriteRule ^fotograf/([0-9-/]+)/?$ fotograf.php?aid=$1 [L]

最後に、これ (のような URL で写真を表示するのに役立ちましたexample.com/fotograf/10/?fid=5):

RewriteCond %{QUERY_STRING} ^fid=(.*)$
RewriteRule ^fotograf/(.*)/$ fotograf.php?aid=$1&fid=%1

しかし、URL にクエスチョン マークやアンパサンドを表示したくありません。

どういうわけか、どれが設定されているかを確認し、それに応じてリダイレクトする必要がありますが、これを達成する方法がわかりません。

これどうやってするの?

前もって感謝します。

4

2 に答える 2

3

必要に応じて URL を生成するようにアプリケーションを作成する必要があるため、次の形式で行います。

example.com/fotograf/10/
example.com/fotograf/10/5/

そして、次の書き換えルールが確認され、phpに到達します:

RewriteEngine On

RewriteRule ^fotograf/([0-9]+)/([0-9]+)/?$ fotograf.php?aid=$1&fid=$2

RewriteRule ^fotograf/([0-9]+)/?$ fotograf.php?aid=$1

mod_rewriteHTML ページの URL を書き換えることができません...

于 2012-11-18T12:50:33.430 に答える
1
# this works 
  RewriteEngine On
  RewriteBase /yourdir/yourfolder/

# only 1 in root 
# RewriteRule ^([a-zA-Z0-9-]+)$ index.php?act=$1[L,QSA]

  RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/?$ members.php?act=$1&opts=$2

  RewriteRule ^([a-zA-Z0-9-]+)/?$ members.php?act=$1

 #   Your url would be:
 #   example of http://localhost/yourdir/yourfolder/members.php?act=beer
 #   http://localhost/yourdir/yourfolder/beer
 # or 
 # http://localhost/yourdir/yourfolder/members.php?act=beer&ops=morebeer
 # http://localhost/yourdir/yourfolder/beer/morebeer
于 2013-12-18T03:33:30.670 に答える