Помогите пожалуйста с редиректом

Alyzer
На сайте с 26.06.2008
Offline
55
726

На цмске при создании страницы к примеру /articles/, создается страница /articles/index.php. Подскажите пожалуйста, как можно все страницы index.php перекинуть на страницы папок или наоборот все папки редиректить на индекс.

siv1987
На сайте с 02.04.2009
Offline
427
#1

редирект с /folder/index.php на /folder/

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/]+/)index\.php$ /$1 [R=301,L]

Alyzer
На сайте с 26.06.2008
Offline
55
#2
siv1987:
редирект с /folder/index.php на /folder/

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+/)index\.php$ /$1 [R=301,L]

спасибо, сейчас попробую.

Alyzer добавил 26.09.2011 в 19:29

siv1987:
редирект с /folder/index.php на /folder/

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+/)index\.php$ /$1 [R=301,L]

:( браузер выдал:

Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

siv1987
На сайте с 02.04.2009
Offline
427
#3

В htaccess других правил нету? Где-то значит еще есть редиректы, который отправляет на index.php. У меня этот код никаких зацикливаний не дал.

Как вариант, перед rewriteCond добавить

RewriteCond %{ENV:REDIRECT_STATUS} ^$

Alyzer
На сайте с 26.06.2008
Offline
55
#4

полностью выглядит так:

RewriteEngine on

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^host\.ru

RewriteRule ^(.*)$ http://www.host.ru/$1 [R=permanent,L]

Options -Indexes

ErrorDocument 404 /404.php

<IfModule mod_php5.c>

php_flag allow_call_time_pass_reference 1

php_flag session.use_trans_sid off

#php_value display_errors 1

#php_value mbstring.func_overload 2

#php_value mbstring.internal_encoding UTF-8

</IfModule>

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-l

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$

RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]

RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]

</IfModule>

<IfModule mod_dir.c>

DirectoryIndex index.php index.html

</IfModule>

<IfModule mod_expires.c>

ExpiresActive on

ExpiresByType image/jpeg "access plus 3 day"

ExpiresByType image/gif "access plus 3 day"

</IfModule>

gormarket
На сайте с 29.12.2010
Offline
47
#5

Alyzer, строку

RewriteEngine on

в файле .htaccess достаточно иметь один раз (если нет строк RewriteEngine off)

Можете оставить всего одну строку (до первого применения RewriteCond или RewriteRule), остальные удалить.

Теперь по Вашему вопросу:

То, что предложил siv1987 предполагало наличие реальных папок (условие "RewriteCond %{REQUEST_FILENAME} !-d").

У Вас же этих папок в реальности нет, в результате условие не срабатывает и происходит зацикливание.

Для Вашего случая можно вставить следующий код


RewriteCond %{THE_REQUEST} index\.php
RewriteRule ^([^/]+/)index\.php$ /$1 [R=301,L]

ниже строки

RewriteEngine on

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
Alyzer
На сайте с 26.06.2008
Offline
55
#6
gormarket:
Alyzer

Для Вашего случая можно вставить следующий код


ниже строки
RewriteEngine on

Спасибо, помогло, но для главной страницы почему то это условие не работает :(

gormarket
На сайте с 29.12.2010
Offline
47
#7

Для главной страницы видимо нужно добавить еще пару строк


RewriteCond %{THE_REQUEST} index\.php
RewriteRule ^index\.php$ / [R=301,L]

или так


RewriteCond %{THE_REQUEST} index\.php
RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L]
Alyzer
На сайте с 26.06.2008
Offline
55
#8
gormarket:
Для главной страницы видимо нужно добавить еще пару строк


или так

Спасибо, помогло.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий