Регулярные выражения

Габриэль
На сайте с 01.09.2006
Offline
85
524

Есть два выражения, первом случае не работает с .html в конце, во втором работает с .html в конце, но перестает работать без .html. Подскажите, как можно соединить воедино, чтобы работало в независимости от того, есть в конце url .html или нет.

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

2. RewriteRule ^(.*)\.html$ index.php?/$1 [L]

Dreammaker
На сайте с 20.04.2006
Offline
569
#1

RewriteRule ^(.*(\.html)?)$ index.php?/$1 [L]

Где-то так, только возожно придётся поставить $2

update: не совсем-то сейчас переделаю...

update2: RewriteRule ^(.*)(\.html)?$ index.php?/$1 [L]

[Удален]
#2

RewriteRule ^(.*)$ index.php?/$1

почему это он не работает с html в конце? И что за слеш перед долларом во второй части правила?

кроме того, при такой форме запроса вам можно вообще ничего не передавать в индекс.пхп, если вы хотите абсолютно любой адрес перехватывать скриптом, обращайтесь из него к $_SERVER['REQUEST_URI'], а правило сделайте прям на index.php без параметров. Хотя это конечно моветон.

Габриэль
На сайте с 01.09.2006
Offline
85
#3

Спасибо за помощь, к сожалению не помогло.

[Удален]
#4

Вы конкретней укажите что происходит. Ответ сервера, распечатку $_GET из скрипта.

А вообще я что-то сразу проглядел - у вас правило кривое

"index.php?что-то там " не сработает

требуется "index.php?переменная=значение"

И слеш перед долларом не ставится. Так что исправьте например на index.php?url=$1

Габриэль
На сайте с 01.09.2006
Offline
85
#5
neolord:
Вы конкретней укажите что происходит. Ответ сервера, распечатку $_GET из скрипта.

А вообще я что-то сразу проглядел - у вас правило кривое
"index.php?что-то там " не сработает
требуется "index.php?переменная=значение"
И слеш перед долларом не ставится. Так что исправьте например на index.php?url=$1

Уже работает по следующему правилу RewriteRule ^(.*)$ index.php/$1 [L]

Помогло прочтение вот этого: http://expressionengine.com/wiki/Remove_index.php_From_URLs/#Generate_.htaccess_for_Include_List_Method_Manually_with_the_weblog%3Aentries_tag

Dreammaker
На сайте с 20.04.2006
Offline
569
#6

Так помощь по ЕЕ нужна была?

Вот мой .htaccess для CodeIgniter'a (ЕЕ на нём написан)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*static(.*)$ ./index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

в папке static хранятся всякого рода картинки и css-ки.

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