Htaccess переписать правила неприятностей - PullRequest
0 голосов
/ 28 ноября 2010

У меня проблемы с настройкой правил переписывания для правильной работы ..

ErrorDocument 404 /404.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^companies/
RewriteRule ^companies\/\?(.*)([A-Za-z]+) index.php?cpy=$1 [R=301,L,NC] 

RewriteRule ^([0-9]+)/?$ index.php?cid=$1 [L]
RewriteRule ^([A-Za-z_]+)/?$ index.php?cat=$1 [L]

Правила перезаписи для domain.com/123 domain.com/abc работают нормально,

но другой, которого я не могу заставить работать, это domain.com/companies/?list=this

Кажется, что apache не находит соответствия для

RewriteRule ^companies\/\?(.*)([A-Za-z]+) index.php?cpy=$1 [R=301,L,NC] 

Может кто-нибудь мне помочьвыяснить, что не так с этим правилом?или это что то другое?

1 Ответ

0 голосов
/ 28 ноября 2010

RewriteRule s не совпадают в строках запроса, как правило.

Вы можете сопоставить их, используя RewriteCond с параметризованными совпадениями, которые отображаются как %1, %2 и т. Д.

например.

RewriteCond %{QUERY_STRING} ^(.*)([A-Za-z]+)$
RewriteRule ^companies\/ index.php?cpy=%1 [R=301,L,NC]
...