mod_rewrite двойной каталог - PullRequest
0 голосов
/ 03 марта 2012

Я использую mod_rewrite в моем .htaccess, чтобы изменить двойную структуру каталогов на двойную GET строку запроса, например, так:

URL: http://domain.com/test/me/

Послеmod_rewrite: http://domain.com/index.php?u=test&c=me

с использованием следующего кода в моем .htaccess файле:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?u=$1&c=$2 [L]

Это прекрасно работает, но если второй каталог не указан (например, http://domain.com/test/) Iхотите, чтобы переменная c равнялась "all" следующим образом:

http://domain.com/index.php?u=test&c=all

Как я могу это сделать? Спасибо , регулярное выражение выглядит для меня как поэзия клингонов.Я пробовал несколько разных вариантов приведенного выше кода, но безуспешно.

PS бонусных очков, если вы можете добавить трейлинг /, даже если он не введен в поле URL, так что http://domain.com/test/meобрабатывается так же, как http://domain.com/test/me/, а http://domain.com/test обрабатывается так же, как http://domain.com/test/

1 Ответ

2 голосов
/ 03 марта 2012

Как это?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)\/?$ index.php?u=$1&c=all
RewriteRule ^([^/]*)/([^/]+)\/?$ index.php?u=$1&c=$2 [L]

Также сделал бонус: P

...