2012-03-24 2 views
1

Я не эксперт в mod_rewrite на всех, и я пытаюсь добавить условие к правилу ниже:Mod Rewrite Rule не соответствует определенным словам

  1. матча, который не равен «акции»
  2. ничего не совпадать с точкой в ​​нем

RewriteRule ^([^/]*)$ http://domain.com/directory/index.php?key=$1 [L]

http://domain.com/directory/share не будет соответствовать (складочном)

http://domain.com/directory/foo.php не будет соответствовать (содержит точка)

http://domain.com/directory/abcde будет соответствовать

http://domain.com/directory/abcde-4 будет соответствовать

Все ULRs не будет иметь завершающий слэш

Любая помощь будет много оценивается

ответ

1

Не сопоставляйте ничего с точкой, добавляя . к отрицаемому персонажу cla сс:

RewriteRule ^([^./]*)$ <snip> 

Не соответствует окончание /share:

RewriteRule ^([^/]*/share)$ <snip> 

Объединить их не-матч либо с помощью negative lookahead:

RewriteRule ^([^./])*(?!/share)$ <snip> 
+0

Или я просто сделать три правила? 'RewriteRule^([^. /] * (?! share)) $ http://domain.com/directory/index.php?key=$1 [L]' 'RewriteRule^([^ /] */share) $ http://domain.com/directory/index.php?key=$1 [L] ' ' RewriteRule^([^. /] * (?! share)) $ http: // domain .com/directory/index.php? key = $ 1 [L] ' –

+0

Я вижу, что это работает, но' key' всегда 'share' - независимо от того, что совпадают символы. Динамический url должен быть http://domain.com/directory/index.php?key=abcde-3, а не http://domain.com/directory/index.php?key=share –

+0

Попробуйте переместить parens: '^([^. /]) * (?!/share) $ '(извините, это просто догадка, но я просыпался в течение ~ 22 часов) –

Смежные вопросы