我正在尝试使用表单中的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]
我在网址中使用的挪威字符未从表单中发布,这很有用。
有什么建议吗?
答案 0 :(得分:1)
挪威字符很可能是URL编码的。
我无法从文档中看到mod重写将如何处理这些。
猜测
RewriteCond %{QUERY_STRING} ^querystring=([a-zA-Z0-9-+%]+)$
可以工作,因为它将获取url编码的扩展字符,但它将允许任何字符,而不仅仅是你想要的字符集。您可以随时在应用程序层修复此问题。
答案 1 :(得分:1)
我会改用[^&]
:
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
的{{1}}标记。