2013-10-28 2 views
1

Я использую mod_rewrite для переписывания своих ссылок следующим образом. Я определил редирект от /test/1234_5678_... до /test.php?id=1234 следующим образом:.htaccess: RewriteRule pattern-matching

RewriteRule test/(.*)_(.*)$ test.php?id=$1 

Он работает perfectely. Теперь я хотел добавить следующее перенаправление: /test/1234_5678_.../print - /test.php?id=1234&print. Поэтому я добавил следующую строку перед тем, что было выше. Переадресация не работает, и похоже, что применяется только второе правило. Я делаю что-то неправильно с сопоставлением с образцом? Это проблема, что может быть более одного подчеркивания, и я использовал его только в шаблоне?

RewriteRule test/(.*)_(.*)/print$ test.php?id=$1&print 
RewriteRule test/(.*)_(.*)$ test.php?id=$1 

ответ

1

Оба правила работают хорошо для меня, но вы, вероятно, хотите изменить первую группу к ([0-9]+) или ([^_]+), а второй группе [^/]+, и добавить некоторые L флаги:

RewriteRule test/([^_]+)_([^/]+)/print$ test.php?id=$1&print [L] 
RewriteRule test/([^_]+)_([^/]+)$ test.php?id=$1 [L] 
+0

Вот weired. Это не работает для меня. Я дважды проверю и попытаюсь привести пример, если я не смогу его исправить. – user1000742