2012-02-07 4 views
0

Следующий RewriteRule перенаправляет трафик с URL-адреса shows.php?id=review-1 в файл контроллера на стороне сервера, который создает URL-адрес дружественного SEO и перенаправляет его с использованием перенаправления 301. Использование CURL, Перенаправление в файл контроллера показывает, как 200, прямая ссылка на файл контроллера показывает 301.RewriteRule возвращает HTTP 200, когда он должен быть HTTP 301

Вот мой RewriteRule:

RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\? 
RewriteCond %{QUERY_STRING} (^|&)id=review-[0-9]+(&|$) [NC] 
RewriteRule^/controllers/redirectseo.php? [R=301,L,NC,QSA] 

Вот результат моих CURL звонков:

curl -I http://www.defunctgames.com/shows.php?id=review-1 
HTTP/1.1 200 OK 

curl -I http://www.defunctgames.com/controllers/redirectseo.php?id=review-1 
HTTP/1.1 301 Moved Permanently 

UPDATE 1:

Я пытался измените мой RewriteRule, чтобы избавиться от [QSA], думая, возможно, в этом и проблема. Он по-прежнему не возвращает 301. Следующее правило перезаписи возвращает 301, поэтому я знаю, что он работает на некотором уровне. Возможно, имеет значение FQL?

RewriteRule ^defunctexplorer.htm$ http://www.defunctgames.com/ [R=301,L] 

UPDATE 2:

Я попробовал FQL редирект, и это не делает разницы либо. Вот что у меня до сих пор:

RewriteCond %{THE_REQUEST} ^GET\s/shows\.php 
RewriteCond %{QUERY_STRING} (^|&)id=([a-z]+)-([0-9]+)(&|$) [NC] 
RewriteRule^http://www.defunctgames.com/controllers/redirectseo.php?id=%2-%3 [R=301,L,NC] 
+0

Hi. Вы нашли решение? Я применил 301-редирект, и, похоже, он работает, но с помощью curl он говорит «ответ кода 200». – JCarlos

ответ

0

%{THE_REQUEST} ли у строки запроса добавляется, неперекодированный? Стоит попробовать:

RewriteCond %{THE_REQUEST} ^GET\s/shows\.php 
RewriteCond %{QUERY_STRING} (^|&)id=review-[0-9]+(&|$) [NC] 
RewriteRule^/controllers/redirectseo.php? [R=301,L,NC,QSA] 
+0

Я попробовал удалить '\?', Как вы предполагали, и это, похоже, не изменило ситуацию. –

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