Простое регулярное выражение для .htaccess? - PullRequest
0 голосов
/ 18 января 2011

У меня есть регулярное выражение для фреймворка для преобразования host.com/controller/method в host.com/index.php?controller/method

Вот так:

RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ /index.php/$1 [L]

Теперь мне требуется преобразовать его в
host.com/controller/method -> host.com/index.php?controller=$1&method=$2

Как мне сделать совпадение с регулярным выражением, как в htaccess?

Ответы [ 2 ]

0 голосов
/ 18 января 2011

Если вам нужен только один сегмент пути вместо всего, используйте [^/] вместо .:

RewriteCond $1 !=index.php
RewriteRule ^([^/]*)$ /index.php/$1 [L]

И для вашего второго требования:

RewriteCond $1 !=index.php
RewriteRule ^([^/]*)/([^/]*)$ /index.php?controller=$1&method=$2 [L,QSA]

Здесь также следует рассмотреть возможность использования квантификатора + (один или несколько) вместо * (ноль или более).

0 голосов
/ 18 января 2011

Как то так?

RewriteRule ^(\w+)/(\w+)$ /index.php?controller=$1&method=$2 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...