2013-07-04 106 views
1

我是新手。我正在清理我的鏈接。我試圖在這裏查看一些答案。我相信我還沒有接近....你能幫我解決這個問題嗎?使用RewriteCond更改鏈接

目前我的鏈接結構是這樣的......

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] 

這是正確的嗎?我相信它看起來像有關胡言亂語..sorry ...

感謝您的幫助..

回答

1

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_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,並在%1 pcaption的價值觀,%2%3
  3. 此後這些捕獲的變量用於創建漂亮的URL /viewgallery/%2/%3
  4. 規則2是內部前
  5. 從網址:/viewgallery/Colorado-Fall/Touched-By-Light它抓住了3個變量:「viewgallery」,「科羅拉多州的秋天」和「感動光傳」到$ 1,$ 2,$ 3
  6. 捕獲的變量被用來構建真正的網址:/viewgallery.php?cname=$2&pcaption=$3

UPDATE:

# /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] 
+0

Anubhava ...謝謝你的回答。我把你的答案複製並粘貼到我的.htaccess文件中,但它沒有改變任何東西。我應該改變/添加任何答案嗎? – yathrakaaran

+0

不,我也測試過它。在你的問題中複製/粘貼你最新的.htaccess。你用什麼URI來測試?在你的目錄結構中,你已經放置了這個.htaccess文件。 – anubhava

+0

Anubhava ...我的服務器上的根文件夾是/ home/rajeev/htaccess,並在該文件中粘貼了您的代碼。這是與我的.htaccess文件中的代碼的工作鏈接。 [http://www.rajeevthomas.com/viewgallery.php?cname=Colorado-Journies&pcaption=Shadows-And-Mysteries](http://www.rajeevthomas.com/viewgallery.php?cname=Colorado-Journies&pcaption=Shadows-和 - 奧祕)當你在頁面上點擊圖片,它將導航到下一張圖片。奇怪的是,代碼帶走了上一個/下一個按鈕。再次感謝.. – yathrakaaran