И снова .htaccess

В
На сайте с 26.06.2012
Offline
0
690

Здравствуйте, следующая проблема:

на сайте минимум 4 дубля каждой страницы, это

www.site.ru/page/

www.site.ru/page

www.site.ru/page.php

www.site.ru/page.html

Как их все приклеить к www.site.ru/page/ ?

Искал везде, сейчас настроил склеку без слеша и с .html , для .php никак не найду.

И вот что еще, я могу написать www.site.ru/page.всечтоугодно и всеравно откроется страница www.site.ru/page/ но с урлом www.site.ru/page.всечтоугодно

Как это пофиксить?

Спасибо за внимание.

C
На сайте с 04.02.2005
Offline
291
#1
Искал везде, сейчас настроил склеку без слеша и с .html , для .php никак не найду.

Слабо показать код?

В
На сайте с 26.06.2012
Offline
0
#2

Вот что есть в файле


php_value memory_limit 128M


RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.php$
RewriteRule (.+) $1/ [R=301,L]

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/



#RewriteCond %{REQUEST_URI} ^(.*)\.html$
#RewriteRule ^(.*)$ %1/ [R=301,L]

# If requested file doesn't exist
RewriteCond %{REQUEST_FILENAME} !-f

# If requested folder doesn't exist
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ index.php [L]
<Files "cronstart.php">
Order Deny,Allow
Deny from all
</Files>
<Files "cmspath.php">
Order Deny,Allow
Deny from all
</Files>
<Files "getrights.php">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Files>
C
На сайте с 04.02.2005
Offline
291
#3

если вы писали это сами, то можете рассказать, что вы хотели добиться, или Вы просто тупо скопировали, а оно не работает

Расскажите, как это работает


RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.php$
RewriteRule (.+) $1/ [R=301,L]

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]

Вот взять построчно и откомментировать...

В
На сайте с 26.06.2012
Offline
0
#4
Chukcha:
если вы писали это сами, то можете рассказать, что вы хотели добиться, или Вы просто тупо скопировали, а оно не работает
Расскажите, как это работает

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.php$
RewriteRule (.+) $1/ [R=301,L]

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]

Вот взять построчно и откомментировать...

Я тупо скопировал, и оно работает, склеивает без слеша к слешу, и с .html к слешу, принцип работы представляю с точностью до строки.

А вот как сделать чтобы любую абракадабру после точки склеивало к слешу, я не нашел.

Незнаю как работает этот кусок, его добавлял не я:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [L]
C
На сайте с 04.02.2005
Offline
291
#5

не поверите...

принцип работы

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [L]

и

RewriteCond %{REQUEST_FILENAME} !-f

...
...
RewriteRule (.+) $1/ [R=301,L]

Один и тот же. ( а говорите, что понимаете)

Кроме того

что-то сильно сомневаюсь, что вот это

у Вас правильно работает

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/
В
На сайте с 26.06.2012
Offline
0
#6
Chukcha:
не поверите...
принцип работы
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [L]


и
RewriteCond %{REQUEST_FILENAME} !-f

...
...
RewriteRule (.+) $1/ [R=301,L]

Один и тот же. ( а говорите, что понимаете)

Кроме того
что-то сильно сомневаюсь, что вот это
у Вас правильно работает
RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/

Без

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.php$
RewriteRule (.+) $1/ [R=301,L]

склейка без слеша и со слешем не работала.

Эта строка:

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/

Склеивает страницу с .html к странице со слешем. Все работает.

Эти две строки:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [L]

Как я написал выше добавлял не я и как они работаю незнаю, но точно не скливают без слеша и слеш. т.к. они были до того как я начал дописывать .htaccess и склейка не работала.

---------- Добавлено 26.06.2012 в 21:41 ----------

Хотя, изначально эта строка

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/

выглядела так:

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1.php
C
На сайте с 04.02.2005
Offline
291
#7

Еще раз...

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/

Этот код у Вас не работает

читайте

http://www.askapache.com/htaccess/301-redirect-with-mod_rewrite-or-redirectmatch.html

В
На сайте с 26.06.2012
Offline
0
#8
Chukcha:
Еще раз...
RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/
Этот код у Вас не работает
читайте
http://www.askapache.com/htaccess/301-redirect-with-mod_rewrite-or-redirectmatch.html

Прочитал, но видимо без хороших знаний правил написания команд для .htaccess, я не понял как мне это может помочь?

И что Вы подразумеваете когда говорите

Этот код у Вас не работает

?

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

C
На сайте с 04.02.2005
Offline
291
#9

Кто-то когда-то сделал в статье (описании) ошибку. Его не поправили.

А потом разлетелось по всему инету неверная строка redirect'а

А все ее копируют и в статьи вставляют, и в htaccess.

А оно НЕ РАБОТАЕТ, вернее редиректится, но не туда куда надо.

Поработайте глазами и поймете где у Вас ошибка.

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

Вот это


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.php$
RewriteRule (.+) $1/ [R=301,L]

RedirectMatch 301 (.*)\.html$ http://www.site.ru$1/

#RewriteCond %{REQUEST_URI} ^(.*)\.html$
#RewriteRule ^(.*)$ %1/ [R=301,L]

Заменить на это


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)(?<!/|\.php|\.html)$ /$1/ [R=301,L]

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