2013-04-22 3 views
1

Я проверял, но я не могу найти точный синтаксис для достижения того, что я пытаюсь..htaccess перенаправляет из определенного файла в уже определенный перезаписывающий файл

Я в настоящее время обновляю веб-сайт, но поскольку у него довольно хорошие позиции в Google, я хочу сохранить все ссылки, но на этот раз я хочу использовать довольно url. Таким образом, проблема у меня заключается в следующем:

У меня есть этот раздел базы-женераль (общие-правила), и я использую это Rewrite:

RewriteRule  ^bases-generales/ bases.php?locale=es_LA 

Проблема у меня в том, что текущий (старый) файл имеет имя base.php, поэтому я хочу, чтобы пользователи были перенаправлены на/bases-generales/при открытии базы.php непосредственно из Google или какой-либо другой ссылки.

Правило я использую в данный момент:

RewriteRule  /bases.php http://mysite/bases-generales/ [R=301,L] 

Теперь эта команда не перенаправление, но единственная проблема в том, что URL выглядит следующим образом:

http://mysite/bases-generales/?locale=es_LA 

И Другая проблема заключается в том, что она вызывает цикл перенаправления.

Для получения дополнительной информации это полная Htaccess (MySite подделка, конечно)

<Files ~ "^\.(htaccess|htpasswd)$"> 
deny from all 
</Files> 
order deny,allow 

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^(mysite)(:80)? [NC] 
RewriteRule ^(.*) http://mysite/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://mysite/$1/ [L,R=301] 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteBase /

RewriteRule  ^/   index.php?locale=es_LA 
RewriteRule  ^bases-generales/ bases.php?locale=es_LA 
RewriteRule  ^condiciones/  condiciones.php?locale=es_LA 
RewriteRule  ^programa/  programa.php?locale=es_LA 
RewriteRule  ^premios/  premios.php?locale=es_LA 
RewriteRule  ^ganadores/  ganadores.php?locale=es_LA 
RewriteRule  ^patrocinadores/ patrocinadores.php?locale=es_LA 
RewriteRule  ^galeria/  galeria.php?locale=es_LA 
RewriteRule  ^contacto/  contacto.php?locale=es_LA 

RewriteRule  ^bases.php  http://mysite/bases-generales/ [R=301,L] 
+0

Что-то странное происходит, я удалил RewriteRule^bases.php Http: // MySITE/базы Генералеса/[R = 301, L] , и теперь он работает, но в некоторых браузерах он все еще добавляет переменную GET локали. –

ответ

0

относительно вашего первого запроса, вы должны добавить ? в новый адрес для того, чтобы предотвратить Rewrite_mod от добавления строки запроса, поэтому директива будет

RewriteRule  ^bases.php http://mysite/bases-generales/? [R=301,L] 

2) вы должны добавить L к вашим правилам перезаписи, чтобы прекратить обработку URL:

RewriteRule  ^bases-generales/ bases.php?locale=es_LA [L] 

Htaccess будет:

<Files ~ "^\.(htaccess|htpasswd)$"> 
deny from all 
</Files> 
order deny,allow 

RewriteEngine on 


RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://mysite/$1/ [L,R=301] 


RewriteBase /

RewriteRule  ^bases.php http://mysite/bases-generales/? [R=301,L] 
RewriteRule  ^sample2.php http://mysite/sample2/? [R=301,L] 


RewriteRule  ^bases-generales/ bases.php?locale=es_LA [L] 
RewriteRule  ^sample2/ sample2.php?locale=xx [L] 
+0

Я изменил его таким образом, и он отправил мне 404. –

+0

что такое URL-адрес, вызывающий 404? –

+0

Извините, я думаю, что 404 был моей ошибкой, потому что я положил /bases.php вместо^base.php, но теперь, когда я перехожу на base.php, он отправляет меня в/bases-generales /, но теперь раздел base-generales выполняет цикл переадресации. Он делает это, даже если я вхожу непосредственно в/bases-generales /. Я проверял команды REWERITE_COND, но я не уверен, как их использовать. –

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