Как переписать / foo в index.php? X = foo, а также / foo / bar в index.php? X = foo & bar = true в одном RewriteRule? - PullRequest
0 голосов
/ 28 июля 2010

Используя Apache RewriteEngine, как переписать /foo в index.php?x=foo, но переписать /foo/bar в index.php?x=foo&bar=true в один RewriteRule?

У меня есть это сейчас:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)? index.php?x=$1 [L,NC] # rewrites /foo to index.php?x=foo, but not /foo/bar to index.php?x=foo&bar=true

Это только переписывает /foo в index.php?x=foo, но не /foo/bar в index.php?x=foo&bar=true.Как я могу добавить это к RewriteRule?

1 Ответ

2 голосов
/ 29 июля 2010

Попробуйте эти правила:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]+)$ index.php?x=$1 [L]
RewriteRule ^([^/]+)/([^/]+)$ index.php?x=$1&$2=true [L]

Первое правило - нарушить, если запрошенный URI можно сопоставить с существующим файлом или каталогом.В противном случае два других правила проверяются и применяются, если одно из них соответствует запрошенному пути URI.

...