Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2014, 17:00   #1
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,603
По умолчанию Подмена url с помощью .htaccess

Ситуация такая, есть единая точка входа на сайт, вот .htaccess который сейчас используется:
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Тут все как обычно.
Задача. Допустим есть url
http://mysite.dev/asdasd/asdasd/adsasd/
нужно чтобы при изменении url на
http://mysite.dev/en/asdasd/asdasd/adsasd/
en вырезало и завернуло в гет параметр
пробую так:
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond   %{REQUEST_URI} /en/.*
RewriteRule ^(.*)$ /index.php?lang=en [L,QSA]
RewriteRule ^.*$ /index.php [NC,L]
Что-то не работает. Я, не бог весть какой специалист по mod_rewrite.. Буду рад помощи. Сайт на zend движке, хотя думаю это не важно

Последний раз редактировалось Gorychev; 01.02.2014 в 17:06.
Gorychev вне форума Ответить с цитированием
Старый 19.02.2014, 01:39   #2
vasiatka
Пользователь
 
Аватар для vasiatka
 
Регистрация: 18.02.2014
Сообщений: 90
По умолчанию

К сожалению под рукой нет апача. Но, на сколько я помню, RewriteRule просто производит обработку по регулярному выражению. И ему просто по барабану, что получено на входе. При этом сначала отрабатывает RuleRewrite (соответствие регулярке), а затем RewriteCond. Поэтому вроде как смысла в вашем RewriteCond нету.


Код:
#url http://mysite.dev/en/asdasd/asdasd/adsasd/
RewriteEngine On

#Вход: en/asdasd/asdasd/adsasd/
RewriteRule ^en/(.*)$ $1?lang=en&%{QUERY_STRING}
#или такое правило, что тоже самое
#RewriteRule ^en/(.*)$ $1?lang=en [QSA]

#Если мне не изменяет память, то теперь получилось
#Выход: asdasd/asdasd/adsasd/
#и в %{QUERY_STRING} добавлен параметр lang

#далее ваш код должен отработать как обычно
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Я, когда на апаче сидел, долго мучался. Возможно мои мучения кому-то пригодятся: Apache. Магия mod_rewrite. Здесь изложены мои потуги в изучении mod_rewrite. Точнее, то простота чего меня особо впечатлила Прочитайте, возможно, вы что-то проясните для себя
В бинарной системе счет ведут не по пальцам, а по кулакам.
Пенза - мой город - я из Пензы.
vasiatka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
.htaccess работа с URL StivinKing PHP 3 01.06.2013 23:27
.htaccess пароль на URL Dexes Общие вопросы Web 11 04.04.2013 23:37
Подмена url-а когда переходят на сайт fludert Работа с сетью в Delphi 2 23.03.2011 08:04
htaccess и инключинг с помощью РНР Maxx PHP 11 13.01.2010 10:59
открыть с помощью Firefox заданный url и исполнить bat файл stayer Общие вопросы Delphi 2 26.10.2008 10:48