2013-04-13 2 views
1

Im относительно новый для фильтра перезаписи ионизирующей и im пытается настроить мой набор правил, чтобы позволить дополнительные динамические правила для моего приложения. В настоящее время у меня есть следующие правила, определенные для моей части моего приложения.Ionics Isapi Rewrite Filter - специальное правило для? в url

RewriteRule ^/shop/(.*)/pages/(.*) /index.cfm?go=shop.products&content=$1&CurrentPage=$2 
RewriteRule ^/shop/(.*)/pages/(.*)/ /index.cfm?go=shop.products&content=$1&CurrentPage=$2 

RewriteRule ^/shop/(.*)$ /index.cfm?go=shop.products&content=$1 
RewriteRule ^/shop /index.cfm?go=shop.products 
RewriteRule ^/products.cfm /index.cfm?go=shop.products 
RewriteRule ^/details.cfm /index.cfm?go=shop.products 

Поставщик услуг говорит, мы Арент позволяя дополнительные отслеживания переменных, которые будут переданы в, если они не префиксом с & символом.

URL-адреса выглядят следующим образом.

www.domainname.com/shop/category-of-products 
www.dimainname.com/shop/ 

с их дополнительными переменными они должны делать, как следует

www.domainname.com/shop/category-of-products&additional-query-strings 
www.dimainname.com/shop/&additional-query-strings 

, что им нужно сделать, это

www.domainname.com/shop/category-of-products?additional-query-strings 
www.dimainname.com/shop/?additional-query-strings 

что это то, что мне нужно сделать, чтобы обеспечить дополнительный? ссылаться

Любая помощь очень ценится

ответ

0

Вы можете воспользоваться переменной $ арг.

Попробуйте добавить & $ args? в конце ваших переписанных URL-адресов. ? в конце убедитесь, что Nginx не собирается автоматически добавлять строку запроса.

например.

RewriteRule ^/shop/(.*)$ /index.cfm?go=shop.products&content=$1&$args? 
+0

не работал, кажется, что авария сайта с ошибкой 500. эта ошибка не связана с приложениями на сервере, кроме самого сервера. Кажется, что не разрешено ничего с помощью? на url, вы бы знали, как в regex заставить его изменить? к символу &? благодарит заранее – user125264

0

Вы можете попытаться изменить регулярное выражение переписывания, чтобы позволить необязательно для любой параметр строки запроса.

Например:

RewriteRule ^/shop/(.*)$ /index.cfm?go=shop.products&content=$1

становится

RewriteRule ^/shop/(.*)(\?.*)?$ /index.cfm?go=shop.products&content=$1

Дополнительное (\?.*)? делает выражение соответствия знак вопроса и все, что следует за 0 или один раз.

я не могу проверить это прямо сейчас, но я думаю, что вы, возможно, даже нужно сделать первую соответствующую группу не жадной, добавив ? после звезды:

RewriteRule ^/shop/(.*?)(\?.*)?$ /index.cfm?go=shop.products&content=$1

Кстати: Это добавляет три вопросительных знака для вашего регулярного выражения, каждый из которых имеет другое значение - сделать предыдущий оператор не жадным, сопоставить буквальный знак вопроса и сопоставить предыдущее выражение 0 или 1 раз.