我正在尝试重写一个从表单获取数据的url。在提交仅包含英文字母的字符串时,此方法工作得很好。但当我提交挪威字符(这是一个挪威页面)时,只显示未重写的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中使用挪威字符,而不是从表单中发布,这很好用。
有什么建议吗?
发布于 2009-04-14 12:16:07
挪威字符很可能是URL编码的。
从文档中我看不出mod rewrite将如何处理这些问题。
一目了然
RewriteCond %{QUERY_STRING} ^querystring=([a-zA-Z0-9-+%]+)$可以工作,因为它将拾取url编码的扩展字符,但它将允许任何字符,而不仅仅是你想要的字符集。您始终可以在应用程序层修复此问题。
发布于 2009-04-14 12:41:08
我会改用[^&]:
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]使用这种解决方案,您甚至可以不使用第二个RewriteRule的a=1标志。
https://stackoverflow.com/questions/747145
复制相似问题