написание mod_rewrite для данных формы - PullRequest
0 голосов
/ 14 апреля 2009

Я пытаюсь переписать URL с GET-данными из формы. Это прекрасно работает при фиксации строк только с английскими буквами. Но когда я фиксирую норвежские символы (это норвежская страница), отображается только не переписанный URL-адрес. Мои mod_rewrite предложения выглядят так:

RewriteCond %{REQUEST_URI} /resultpage.php$
RewriteCond %{QUERY_STRING} ^querystring=([a-zæøåäëöA-ZÆØÅÄËÖ0-9-\+]+)$
RewriteRule ^(.*)$ /sok/%1? [R=301,L]
RewriteRule ^sok/(.*)$ /resultpage.php?querystring=$1&a=1 [L]

Я использую норвежские символы в URL, не опубликованных в форме, и это прекрасно работает.

Есть предложения?

Ответы [ 2 ]

1 голос
/ 14 апреля 2009

Я бы использовал [^&] вместо:

RewriteCond %{REQUEST_URI} ^/resultpage\.php$
RewriteCond %{QUERY_STRING} ^querystring=([^&]+)$
RewriteRule ^resultpage\.php$ /sok/%1? [R=301,L]

И вы все еще можете упростить это:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /resultpage\.php\?querystring=([^&\s]+)\s
RewriteRule ^resultpage\.php$ /sok/%1? [R=301,L]

Используя это решение, вы даже можете оставить флаг a=1 второго RewriteRule.

1 голос
/ 14 апреля 2009

Норвежские символы могут быть закодированы в URL.

Я не могу видеть из документов, как перезапись модов будет справляться с этим.

На предположение

RewriteCond %{QUERY_STRING} ^querystring=([a-zA-Z0-9-+%]+)$

Может работать, так как будет подбирать расширенные символы в кодировке URL, но это позволит использовать любой символ, а не только тот набор, который вы хотите. Вы всегда можете исправить это на прикладном уровне.

...