2013-07-04 3 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 и .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 он захватывает 3 переменные: "viewgallery", "Колорадо-Fall" и "Прикосновение-By-Light" в $ 1, $ 2, $ 3
  6. Захваченные переменные используются для построения реального URL: /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

анубхава ... спасибо за ваш ответ. У меня есть ваш ответ, скопированный и вставленный в файл .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- And-Mysteries) Когда вы находитесь на странице, нажмите на изображение, и он перейдет к следующему изображению. Как ни странно, код забирает предыдущую/следующую кнопку. Еще раз спасибо .. – yathrakaaran

Смежные вопросы