Показать полную графическую версию : mod_rewrite etc.
Страниц :
1
2
3
4
5
6
[
7]
8
9
10
RewriteRule ^vmchk\/([^\/]+)(\.html)? http://example.com/$1.html [R,L]
d0ublezer0
30-11-2009, 14:50
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
да, работает не так, как ожидалось (
тогда два варианта
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]
total_abandon
30-03-2010, 14:07
Здравствуйте люди у меня такой вопрос. Есть такие правила.
RewriteRule /(.*)$ /index.php?lang=$1
RewriteRule /(.*)/(.*)$ /index.php?page=$1&lang=$2
че то не работает. если удаляю первое правило, второе нормально работает но вместе - Internal Server Error.. или работает ненормально, не выводятся картинки.. посоветуйте что нибудь.
ибо бесконечный цикл и мало конкретики в правилах...
+ передний слеш, если в конфиге сервера, а не htaccess, иначе уберите везде...
RewriteRule ^/([^\/]*)$ /index.php?lang=$1
RewriteRule ^/([^\/]+)/([^\/]*)$ /index.php?page=$1&lang=$2
total_abandon
30-03-2010, 14:44
спасибо за столь быстрый отзыв. снял слеши, 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.
уточните условия, непонятно, что требуется...
у вас на первое RewriteRule действуют 2 верхних условия RewriteCond (что не файл и не папка), а второе RewriteRule по-любому работает...
total_abandon
30-03-2010, 15:05
вообщем у меня такая штука, есть index.php?page=Products&lang=rus и index.php?lang=rus . нужно чтоб они работали если в первом случае то site.com/products/rus, и site.com/rus соответственно. как именно сделать чтоб работало, ссылки на сайте изменены соответсвенным образом.
по идее достаточно этих строк (без всего остального)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^\/]+)\/)?([^\/]+)$ index.php?page=$2&lang=$3 [L]
хотя и от самого скрипта index.php зависит тоже...
RewriteCond - это на случай если такой реальный путь существует (чтобы не было конфликтов)...
total_abandon
30-03-2010, 15:35
а что 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 ...
у меня правило рабочее (проверено), только небольшие поправки (см. пост выше)...
total_abandon
30-03-2010, 16:05
может нужны какие то доп. настройк чтоб твой код работал у меня?? у меня апач 2.2.9
а что index.php ?? »
в смысле, как скрипт определяет пустые GET-переменные (isset/empty). В том случае isset - true, и empty - true (переменная существует, но пустая), а если с двумя правилами, то isset - false, а empty - true (мб переменной не существовать в одном правиле)... т.е. если везде empty, то надежнее...
нужны какие то доп. настройк чтоб твой код работал у меня?? »
никаких
вот .htaccess
Options +FollowSymLinks
RewriteOptions MaxRedirects=3
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^\/]+)\/)?([^\/]+)$ index.php?page=$2&lang=$3 [L]
total_abandon
30-03-2010, 16:46
нет у меня типа этого. -
$page = $_GET['page'];
if(page == "products")
{
...
}
if(page == "products") »
$page (ошибочка)
если $_GET['page'] не существует, то будет e_notice. Нужно проверять наличие (empty/isset).
хотя можно и заткнуть (@$_GET['page'])
Здравствуйте. Уже третий день парюсь, ничего не могу поделать.
Делаю ЧПУ с помощью mod_rewrite.
Мне нужно, чтобы ссылки site.ru/ru/page ссылались на index.php?lang=ru&page=page
При отсутствии последней переменной пусть посылается только одна.
.htaccess:
DirectoryIndex /ru/
RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z]+)/?$ index.php?lang=$1 [L]
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)/?$ index.php?lang=$1&page=$2 [L]
все хорошо, переменные присылаются, но также подменяются и папки, тоесть при запросе site.ru/ru/about/
мы какбы находимся в папке ru/about.
Со всеми вытекающими: не находит страницы и стили.
Заранее благодарен)
можно добавить проверку на наличие файла (или другие условия),
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z]+)(/([A-Za-z]+))?/?$ index.php?lang=$1&page=$3 [L]
или конкретно определить возможные псевдо-папки
RewriteRule ^(ru|en)/?$ index.php?lang=$1 [L]
RewriteRule ^(ru|en)/(page|other)/?$ index.php?lang=$1&page=$2 [L]
Ну это все варианты варианты, но меня мучает один вопрос.
Почему /ru/page1/ он пересылает в файл, но ../ для него становится этими папками?
total_abandon
31-03-2010, 08:46
у меня вообще не работает код sham-а, только работает указанный мною, все эты скобки, квадратные круглые все это не работает. мне нужно чтоб нормально работали эти два правила вместе... но никак .... одно правило со всем справляется тока когда меняешь язык и остается одна переменная GET выдает что не найденна такая папка на сервере... посоветуйте что нибудь все перепробовал.
Почему /ru/page1/ он пересылает в файл, но ../ для него становится этими папками? »
если вопрос об относительных ссылках на css, скрипты и картинки, то безусловно они не будут работать, поскольку для браузера это директории, хоть и псевдо. Поэтому все относительные ссылки надо заменить на корневые, с передним слешем... <script src="/file.js">
у меня вообще не работает код sham-а, только работает указанный мною, все эты скобки, квадратные круглые все это не работает. »
читайте логи сервера, смотрите настройки, мб у вас htaccess вообще запрещены, а работают правила, прописанные в конфиге... у DirectoryIndex непонятное значение...
Если код не работает у вас, это не значит, что он неправильный.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.