Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
1

rewrite правила

18.10.2013, 16:50. Показов 2454. Ответов 16
Метки нет (Все метки)

подскажите пожалуйста как из ссылок:
http://www.<site>.ru/send/index.php
http://www.<site>.ru/send/index
сделать ссылки такого типа:
http://www.<site>.ru/send

пишу в .htaccess:
Код
RewriteCond %{REQUEST_URI} ^send/index\.php$ [OR]
RewriteCond %{REQUEST_URI} ^send/index$ 
RewriteRule ^(.*) send [L]
Толку 0, уже как только не пробовал, даже так:
PHP
1
2
3
4
5
6
if ($_SERVER['REQUEST_URI'] == '/send/index.php' || $_SERVER['REQUEST_URI'] == '/send/index')
    {
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: http://'.$siteq.'/send');
        exit(); 
    }
Добавлено через 1 час 21 минуту
Вот для убирания дубликата на главной у меня такой рерайт прописан:
Код
RewriteCond %{REQUEST_URI} ^/index\.(.+)$ [OR]
RewriteCond %{REQUEST_URI} ^/index$
RewriteRule .+ / [R=301,L]
как сделать для вложености? 2 и 3 уровня?

Добавлено через 28 минут
то есть, как избавиться тут от index.php и index:
http://www.<site>.ru/<вложеность 1>/index.php
http://www.<site>.ru/<вложеность 1>/index
http://www.<site>.ru/<вложеность 1>/<вложеность 2>/index.php
http://www.<site>.ru/<вложеность 1>/<вложеность 2>/index
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2013, 16:50
Ответы с готовыми решениями:

Rewrite mode. Помоги с написание простого правила
Всем привет, уже 2 дня бьюсь над проблемой создания условия, которое превращало бы ссылку типа: ...

rewrite
Помогите разобраться в ошибке? использую мод rewrite, а сервер выдает error 500.. вот

Mod rewrite
Здраствуйте только начал заниматься rewite-ом. И сразу сталкнулся с непонятным)) вощем есть...

.htaccess Rewrite
На сервере есть html файлик. В нем подгружается скрипт по такому адресу. &lt;script...

16
214 / 214 / 73
Регистрация: 12.03.2013
Сообщений: 485
18.10.2013, 18:32 2
Код
RewriteRule ^[\w/-]*(?=/index(?:\.php)?$) /$0 [NC,R=301,L]
0
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
19.10.2013, 12:06  [ТС] 3
TAB, увы, но не работает(
0
214 / 214 / 73
Регистрация: 12.03.2013
Сообщений: 485
19.10.2013, 12:57 4
Код
RewriteEngine On

RewriteBase /

RewriteRule ^[\w/-]*?(?=/?index(?:\.php)?$) $0 [NC,R=301,L]
0
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
19.10.2013, 13:18  [ТС] 5
TAB, все равно ничего не происходит(
0
214 / 214 / 73
Регистрация: 12.03.2013
Сообщений: 485
19.10.2013, 13:32 6
Для заданного .htaccess ввожу у ся запросы вида:
Код
# site.ru/send/index
# or
# site.ru/send/index.php

# site.ru/send/post/index
# or
# site.ru/send/post/index.php

# site.ru/send/post/edit/index
# or
# site.ru/send/post/edit/index.php
Получаю внешний редирект, соотв.:
Код
# site.ru/send

# site.ru/send/post

# site.ru/send/post/edit
Иными словами где-то у Вас в др. месте бедствие.
0
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
19.10.2013, 13:40  [ТС] 7
мой .htaccess:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
AddDefaultCharset UTF-8
AddType application/x-httpd-php .json
DirectoryIndex index.php
 
RewriteEngine On
RewriteBase /
Options +FollowSymlinks
 
ErrorDocument 404 /templates/error404.php
 
RewriteCond   %{REQUEST_FILENAME}       !-d
RewriteCond   %{REQUEST_FILENAME}       !-f
RewriteRule   ^(.*) engine.php?%{QUERY_STRING}
 
php_value upload_max_filesize 20M
 
# редирект на www #
RewriteCond %{http_host} ^(?!www\.).* [NC]
RewriteRule ^(.*)$ http://www.%{http_host}/$1 [R=301,NC,L]
 
# убирает дубль главной страницы #
RewriteCond %{REQUEST_URI} ^/index\.(.+)$ [OR]
RewriteCond %{REQUEST_URI} ^/index$
RewriteRule .+ / [R=301,L]
0
214 / 214 / 73
Регистрация: 12.03.2013
Сообщений: 485
19.10.2013, 14:22 8
Код
AddDefaultCharset UTF-8
AddType application/x-httpd-php .json

DirectoryIndex index.php
Options +FollowSymLinks

ErrorDocument 404 /templates/error404.php

php_value upload_max_filesize 20M

RewriteEngine On

RewriteBase /

# redirect to www.host
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* %{REQUEST_SCHEME}://www.%{HTTP_HOST}/$0 [NC,R=301,L]

# without 'index' or 'index.php' at the end
RewriteRule ^[\w/-]*?(?=/?index(?:\.\w+)?$) $0 [NC,R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* engine.php [NC,QSA]
1
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
19.10.2013, 23:30  [ТС] 9
TAB, огромное спасибо!!! работает!!!
итоговый мой вариант:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
AddDefaultCharset UTF-8
AddType application/x-httpd-php .json
 
DirectoryIndex index.php
Options +FollowSymLinks
 
ErrorDocument 404 /templates/error404.php
 
php_value upload_max_filesize 20M
 
RewriteEngine On
 
RewriteBase /
 
# редирект на www #
RewriteCond %{http_host} ^(?!www\.).* [NC]
RewriteRule ^(.*)$ http://www.%{http_host}/$1 [R=301,NC,L]
 
# убирает 'index' или 'index.php' в конце запроса #
RewriteRule ^[\w/-]*?(?=/?index(?:\.\w+)?$) $0 [NC,R=301,L]
 
# избавляемся от завершающего слеша '/' #
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* engine.php [NC,QSA]
0
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
21.10.2013, 12:58  [ТС] 10
TAB, а вы бы не могли еще помочь с
Цитата Сообщение от piraids Посмотреть сообщение
# избавляемся от завершающего слеша '/' #
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
на сайте все норм убирает, а вот в админке - есть запросы вида /admin/?act=documents и после этого кода оно вырезает '/' - получается /admin?act=documents

Добавлено через 7 минут
все ок - добавил исключение:
PHP
1
RewriteCond %{REQUEST_URI} !^/admin/(.*)$ [NC]
и все нормуль)
PHP
1
2
3
4
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteCond %{REQUEST_URI} !^/admin/(.*)$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Добавлено через 9 минут
блин, проблема с переходом в админку - ссылка вида -
PHP
1
index.php?do=-22
как добавить её в исключение?

Добавлено через 5 минут
PHP
1
2
RewriteCond %{REQUEST_URI} !^index\.php?do=-22$
RewriteRule ^[\w/-]*?(?=/?index(?:\.\w+)?$) $0 [NC,R=301,L]
не помогает((

Добавлено через 29 минут
поправил правило:
PHP
1
RewriteRule   ^(.*) engine.php?%{QUERY_STRING}
все заработало

Добавлено через 2 часа 3 минуты
TAB, прошу помощи(( все равно не работает, оказался кеш, поэтому думал что работает, как добавить
PHP
1
index.php?do=-22
для этого правила
PHP
1
RewriteRule ^[\w/-]*?(?=/?index(?:\.\w+)?$) $0 [NC,R=301,L]
Добавлено через 39 минут
PHP
1
2
3
4
RewriteCond %{REQUEST_URI} !^/admin/(.*)$ 
RewriteCond %{REQUEST_URI} !^\/index\.php?do=-22$
RewriteCond %{REQUEST_URI} ^[\w/-]*?(?=/?index(?:\.\w+)?$)
RewriteRule .* $0 [R=301,L]
так циклическая переадресация(
0
214 / 214 / 73
Регистрация: 12.03.2013
Сообщений: 485
21.10.2013, 14:43 11
Если правильно понял, нужно переписать путь URI если нет подстроки, начинающейся с /admin, и нет аргумент do=-22 у строки запроса!
Код
# external redirect without 'index', 'index.w_0rd' or '/' at the end
RewriteCond %{QUERY_STRING} !do=-22 [NC]
RewriteRule ^(?!admin)[\w/-]*?(?=/$|(?:/?index(?:\.\w+)?$)) $0 [NC,R=301,L]
Добавлено через 6 минут
Так надёжнее:
Код
RewriteCond %{QUERY_STRING} !do=-22(?=$|&) [NC]
1
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
21.10.2013, 14:45  [ТС] 12
TAB, спасибо!! у Вас очень полезные ответы!! мне еще учится и учится) весь ваш код занес себе в закладки) очень полезные моды рерайта)
0
12 / 12 / 2
Регистрация: 22.01.2014
Сообщений: 71
01.10.2015, 14:43 13
У меня такое проблема(просто не хочу создавать тему так как что то похожее тут).
Моя задача состоит в том что бы ссылка типа domen.ru/?option=home Выглядил так domen.ru/home.
Притом, что бы любая ссылка с ?option=что-то там преобразовал в /что-то там.
Пробовал RewriteRule ^(.*)/?$ index.php?option=$1
Но не помогает иска по интернету пробовал там эти примеры выдовал ошибку в виде 500 или 404 нет страницы.
Не могу понять что не так. помогите пожалуйста.
Уточню что мне нужно при написание к примеру http://domen.ru/name я получал GET запрос ?option=name
0
5 / 5 / 7
Регистрация: 01.08.2013
Сообщений: 174
02.10.2015, 08:41  [ТС] 14
hrach333, Вам надо что то наподобии такого:
PHP
1
RewriteRule index.php?option=(.*) /$1/ [R=301,L]
Чтобы вместо http://<domain>/?option=name было http://<domain>/name/
0
Заблокирован
02.10.2015, 11:53 15
Неправильно, ему не это нужно, к тому же в вашем правиле допущена откровенная ошибка. Просто нужно добавить условие, препятствующее зацикливанию, например RewriteCond %{REQUEST_FILENAME} !-f
0
214 / 214 / 73
Регистрация: 12.03.2013
Сообщений: 485
02.10.2015, 17:38 16
Код
<IfModule mod_rewrite.c>
	RewriteEngine On

	RewriteBase /

	# 'index.php?option=9a_Me&arg=value' will be redirected to '/9a_Me'
	RewriteCond %{THE_REQUEST} /index\.php [NC]
	RewriteCond %{QUERY_STRING} (?<=(?<=^|&)option=)\w+ [NC]
	RewriteRule ^index.php$ %0 [NC,QSD,R=301,L]

	# '/9a_Me' or '/9a_Me/' will be rewritten to 'index.php?option=9a_Me'
	RewriteRule ^\w+(?=/?$) index.php?option=$0 [L]
</IfModule>
0
0 / 0 / 0
Регистрация: 14.04.2016
Сообщений: 1
14.04.2016, 10:31 17
Подскажите пожалуйста, как можно убрать с такого url
www.my-site/razdel/cont/ слово "razdel" во всех ссылках, либо сделать редирект на новые страницы без слова "razdel"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2016, 10:31

Rewrite Rule
Нужно чтобы при переходе на страницу /topic1#post3555 открывалась страница...

Mode Rewrite
Всем привет. Вот что в .htaccess RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME}...

rewrite Rule
Здравствуйте, помгите сделать ЧПУ. делаю так, но ничего не получается. RewriteEngine On...

rewrite rules
Помогите разобраться с правилами: 1. Осуществить 301 редирект со страниц сайта http://domain.ru...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.