1

私はここの初心者です。リンクをクリーンアップしようとしています。ここでいくつかの答えを見てみました。私は近くにさえいないと確信しています....!これで私を助けてもらえますか?

現在、私のリンク構造はこれです...

xyz.com/viewgallery.php?cname=Colorado-Fall&pcaption=Touched-By-Light

しかし、私は視聴者にこのリンクを見てもらいたいxyz.com/viewgallery/Colorado-Fall/Touched-By-Lightです (これはリダイレクトを意味しますか?)

次に、私のリンクに書き直します。( ?? 私はこう理解しています)...

だから私は書いた...

「this1」の場合、実際のリクエストかどうかを確認します

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /viewgallery.php\?cname=(.*)&pcaption=(.+)

# redirect to "this2"
RewriteRule ^viewgallery\.php /%1/%2/?%3 [R=301,L]

# now rewrite "this2" back to "this1"
RewriteRule ^(.*?)/(.+)$ /viewgallery.php?cname=$1&pcaption=$2 [L,QSA]

これは正しいです?私はそれが意味不明のように見えると確信しています..ごめんなさい!

ご協力いただきありがとうございます..

4

1 に答える 1

1

mod_rewrite と .htaccess を有効にしてからhttpd.conf、このコードをディレクトリの.htaccess下に配置します。DOCUMENT_ROOT

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# externally redirect /viewgallery.php?cname=Colorado-Fall&pcaption=Touched-By-Light to 
# /viewgallery/Colorado-Fall/Touched-By-Light to 
# RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(viewgallery)\.php\?cname=([^&]+)&pcaption=([^&\s]+) [NC]
# RewriteRule ^ /%1/%2/%3? [L,R=301,NE]

# internally forward /viewgallery/Colorado-Fall/Touched-By-Light to 
# /viewgallery.php?cname=Colorado-Fall&pcaption=Touched-By-Light
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?cname=$2&pcaption=$3 [L,QSA]

説明:

  1. ルール1は、URLをきれいにするための外部リダイレクト用です
  2. 「viewgallery」とパラメーター cname および pcaption の値を %1、%2、%3 にキャプチャします
  3. その後、これらのキャプチャされた変数は、きれいな URL を作成するために使用されます/viewgallery/%2/%3
  4. ルール 2 は内部転送用です
  5. URL から/viewgallery/Colorado-Fall/Touched-By-Light: 「viewgallery」、「Colorado-Fall」、「Touched-By-Light」の 3 つの変数を $1、$2、$3 にキャプチャします。
  6. キャプチャされた変数は、実際の URL を構築するために使用されます。/viewgallery.php?cname=$2&pcaption=$3

アップデート:

# /viewgallery.php?cname=Colorado-Fall&pcaption=Poked to /photos/Colorado-Fall/Poked.jpg
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+viewgallery\.php\?cname=([^&])+&pcaption=([^&\s]+) [NC]
RewriteRule ^ /photos/%1/%2.jpg? [R=301,L]

RewriteRule ^photos/([^/]+)/([^.]+)\.jpg$ /viewgallery.php?cname=$1&pcaption=$2 [QSA,L,NC]
于 2013-07-04T05:35:58.363 に答える