2013-06-26 2 views
0

У меня есть следующий Rewrite Rulemod_rewrite URL (условие во второй части)

RewriteRule ^/product/([^/]*)/([^/]*)/([^/]*)/([^/]*)/((test_data|data_test)/)?([^/]*)$ /product/?query_one=$1&query_two=$2&query_three=$3&query_four=$4&file_path=$6/$7 

В последнем значении file_path «s Я сочетающей $6/$7.

Возможно ли, если $6 не имеет значения, то file_path будет только $7? Я не хочу / id $6 is None. Я просто хочу поставить условие в этой части.

Редактировать

https://example.com/product/one/two/three/four/test_data/file.jar

К

https://example.com/product/?query_one=one&query_two=two&query_three=three&query_four=four&file_path=test_data/file.jar

Проблема с этим URL

https://example.com/product/one/two/three/four/test_file.xml

Пожалуйста, предложите?

Спасибо!

+0

Pls обеспечить некоторые примеры вашей исходной и целевой URL. – anubhava

+0

@anubhava вопрос обновлен примерами – Ahsan

ответ

0

Похоже, вам просто нужно немного упростить свой шаблон. После работы для меня:

RewriteRule ^/?product/([^/]*)/([^/]*)/([^/]*)/([^/]*)/(.*?)/?$ /product/?query_one=$1&query_two=$2&query_three=$3&query_four=$4&file_path=$5 [L,QSA,NC] 

ИЛИ если вы хотите, чтобы убедиться, что реж только (test_data|data_test) затем использовать:

RewriteRule ^/?product/([^/]*)/([^/]*)/([^/]*)/([^/]*)/((?:(?:test_data|data_test)/)?.*?)/?$ /product/?query_one=$1&query_two=$2&query_three=$3&query_four=$4&file_path=$5 [L,QSA,NC] 
+0

Нет, я хочу работать с этим шаблоном для обоих типов URL-адресов. Я не хочу '/' в 'file_type' значение, если' $ 6' пуст. – Ahsan

+0

Я никогда не оставляю решение, если не пробовал самостоятельно: P Другими словами, да выше работает для обоих ваших URL. – anubhava

+0

В этом случае все может появиться '(. *?)', Но я хочу дать только две опции '(test_data | data_test) /' – Ahsan