Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » mod_rewrite etc.

Ответить
Настройки темы
mod_rewrite etc.

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120


Конфигурация

Профиль | Отправить PM | Цитировать


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

Вот что я вынес из данного знакомства-с помощью mod_rewrite можно:
1) Самое распространённое использование-перезапись урлов, например есть урл index.php?forum=webmaster&topic=45
можно переписать в index.php/webmaster/45, что для некоторых поисковых машин намного более лучший вариант
2)запретить доступ к определённому файлу
RewriteRule ^file.ext$ - [F]
3)запретить доступ определённому браузеру, сборщику почты, доступ с определённого айпи или пришедшим с определённого сайта
RewriteCond %{HTTP_USER_AGENT} ^Browser_Name [OR]
RewriteCond % {REMOTE_HOST} ^www.badsite.com$ [OR]
RewriteCond % {REMOTE_ADDR} ^169.45.23.01$
RewriteRule ^.*$ - [F]

Это было самое распространённое применение данного модуля, но есть ещё много всяких интересных хитростей:
наприсер я недавно нашёл такое применение-при вызове страницы pic.html, нужно показывать картинку дня, поэтому можно переписать этот урл в pic-06-06.html c помощью серверных переменных TIME_MON и TIME_DAY
RewriteRule ^pic.html$ pic-%{TIME_MON}-%{TIME_DAY}.html

Или ещё кому нравится можно переписать файл index.php кому очень захочется в index.bmp

Если кто ещё знает интересные применения данного модуля, то постите тут

-------
Fortes fortuna adiuvat


Отправлено: 14:41, 06-06-2004

 

Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
RewriteRule ^vmchk\/([^\/]+)(\.html)? http://example.com/$1.html [R,L]

Отправлено: 14:39, 30-11-2009 | #121



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 118
Благодарности: 2

Профиль | Отправить PM | Цитировать


Sham, не помогает
Также и ставится два расширения.
Вот весь мой htaccess
Код: Выделить весь код
##
# @version $Id: htaccess.txt 10492 2008-07-02 06:38:28Z ircmaxell $
# @package Joomla
# @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##


#####################################################
#  READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
#
#####################################################

##  Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

#
#  mod_rewrite in use

RewriteEngine On

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]

RewriteRule ^vmchk\/([^\/]+)(\.html)? http://example.com/$1.html [R,L]
#
########## End - Rewrite rules to block out some common exploits

#  Uncomment following line if your webserver's URL
#  is not directly related to physical file paths.
#  Update Your Joomla! Directory (just / for root)

# RewriteBase /


########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section

Последний раз редактировалось Sham, 30-11-2009 в 15:50. Причина: example.com


Отправлено: 14:50, 30-11-2009 | #122


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


да, работает не так, как ожидалось (

тогда два варианта

1. если в именах в ссылках недопускаются точки, кроме расширений .html, то можно так
Код: Выделить весь код
RewriteRule ^vmchk\/([^\/\.]+) http://example.com/$1.html [R,L]
2. если точки допускаются, то получится два правила

Код: Выделить весь код
RewriteRule ^vmchk\/([^\/]+\.html)$ http://example.com/$1 [R,L]

RewriteRule ^vmchk\/([^\/]+) http://example.com/$1.html [R,L]
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:20, 30-11-2009 | #123


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте люди у меня такой вопрос. Есть такие правила.
Код: Выделить весь код
RewriteRule /(.*)$ /index.php?lang=$1
RewriteRule /(.*)/(.*)$ /index.php?page=$1&lang=$2
че то не работает. если удаляю первое правило, второе нормально работает но вместе - Internal Server Error.. или работает ненормально, не выводятся картинки.. посоветуйте что нибудь.

-------
маздаи - must die


Последний раз редактировалось Sham, 30-03-2010 в 14:24. Причина: глюк


Отправлено: 14:07, 30-03-2010 | #124


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


ибо бесконечный цикл и мало конкретики в правилах...
+ передний слеш, если в конфиге сервера, а не htaccess, иначе уберите везде...

Код: Выделить весь код
RewriteRule ^/([^\/]*)$ /index.php?lang=$1
RewriteRule ^/([^\/]+)/([^\/]*)$ /index.php?page=$1&lang=$2

Отправлено: 14:21, 30-03-2010 | #125


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо за столь быстрый отзыв. снял слеши, Intern. Server Error. поставил слеши обратно и сделал как сказано. вот полный код.
Код: Выделить весь код
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^\/]*)$ /index.php?lang=$1
RewriteRule ^/([^\/]+)/([^\/]*)$ /index.php?page=$1&lang=$2
так вообще обе правила не работают. у меня всe w .htaccess.

-------
маздаи - must die


Последний раз редактировалось Sham, 30-03-2010 в 14:54.


Отправлено: 14:44, 30-03-2010 | #126


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


уточните условия, непонятно, что требуется...
у вас на первое RewriteRule действуют 2 верхних условия RewriteCond (что не файл и не папка), а второе RewriteRule по-любому работает...

Отправлено: 15:01, 30-03-2010 | #127


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


вообщем у меня такая штука, есть index.php?page=Products&lang=rus и index.php?lang=rus . нужно чтоб они работали если в первом случае то site.com/products/rus, и site.com/rus соответственно. как именно сделать чтоб работало, ссылки на сайте изменены соответсвенным образом.

-------
маздаи - must die


Отправлено: 15:05, 30-03-2010 | #128


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


по идее достаточно этих строк (без всего остального)
Код: Выделить весь код
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^\/]+)\/)?([^\/]+)$ index.php?page=$2&lang=$3 [L]
хотя и от самого скрипта index.php зависит тоже...

RewriteCond - это на случай если такой реальный путь существует (чтобы не было конфликтов)...

Последний раз редактировалось Sham, 30-03-2010 в 16:00. Причина: ошибочка


Отправлено: 15:23, 30-03-2010 | #129


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


а что index.php ??он у меня получает данные методом GET и все, но что-то не хочет работать чертов mod_rewrite.
у меня работает тока так.
Код: Выделить весь код
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /(*.)/(*.)$ /index.php?page=$1&lang=$2
и только с двумя переменными в адресной строке, все работает и картинки и ссылки.. но как только ссылка типа index.php?lang=rus сразу not found ...

-------
маздаи - must die


Отправлено: 15:35, 30-03-2010 | #130



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » mod_rewrite etc.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - mod_rewrite .htaccess Wimpheling Общий по Linux 0 08-10-2013 14:57
Разное - Включение модуля mod_rewrite Lenivets1 Программирование и базы данных 5 13-02-2012 20:00
mod_rewrite Jaels Программное обеспечение Linux и FreeBSD 2 06-01-2012 12:09
mod_rewrite kishert Вебмастеру 3 10-03-2009 06:52
mod_rewrite PHANTOM777 Вебмастеру 1 20-07-2008 10:00




 
Переход