2015-05-14 2 views
1

Я хочу перенаправить /index.php?id=1&time=10 на /first-10..htaccess с двумя параметрами переадресации на страницу 404

.htaccess:

RewriteEngine On 
RewriteCond %{QUERY_STRING} id=1&time=10 
RewriteRule ^index\.php$ /first-10/? [L,R=301] 

когда доступ /index.php?id=1&time=10 перенаправляет /first-10/, но это 404 страницы. Также обратите внимание на последнюю косую черту.

Где проблема?

ответ

1

Вам необходимо внутренне переписать его обратно в его первоначальный формат.
Вы должны использовать THE_REQUEST, чтобы избежать бесконечного цикла,

RewriteEngine On 

RewriteCond %{THE_REQUEST} \s/(?:index\.php)?\?id=1&time=10\s [NC] 
RewriteRule^/first-10? [R=301,L] 

RewriteRule ^first-10$ /index.php?id=1&time=10 [L] 
  • Оба http://example.com/index.php?id=1&time=10 и http://example.com/?id=1&time=10 будет перенаправлять http://example.com/first-10.
  • http://example.com/first-10 будет внутренне переписать его обратно /index.php?id=1&time=10
+0

Я уверен, что ему не нужно беспокоиться о бесконечном цикле, потому что первый переадресация - 301. Кроме того, ему нужно будет изменить сценарий для обработки этого URI без верификации. – Zenexer

+0

Поскольку OP нуждается в переписывании, он столкнется с проблемой цикла, если он не использует 'THE_REQUEST'. И да, это обязательно (в противном случае он получает 404, так как его не существует) –

+0

Это работает, но перенаправляется на '/ first-10? Id = 1 & time = 10'. – mure

0

Если действительно проблема .htaccess, страница правильный результат и перенаправление называется, я tinking в: «?»

символ между первым-10/и [L, R = ??? Или после/после первого-10 ???

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