首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在为表单数据编写mod_rewrite

问正在为表单数据编写mod_rewrite
EN

Stack Overflow用户
提问于 2009-04-14 11:34:14
回答 2查看 451关注 0票数 0

我正在尝试重写一个从表单获取数据的url。在提交仅包含英文字母的字符串时,此方法工作得很好。但当我提交挪威字符(这是一个挪威页面)时,只显示未重写的url。我的mod_rewrite语句如下所示:

代码语言:javascript
复制
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中使用挪威字符,而不是从表单中发布,这很好用。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-14 12:16:07

挪威字符很可能是URL编码的。

从文档中我看不出mod rewrite将如何处理这些问题。

一目了然

代码语言:javascript
复制
RewriteCond %{QUERY_STRING} ^querystring=([a-zA-Z0-9-+%]+)$

可以工作,因为它将拾取url编码的扩展字符,但它将允许任何字符,而不仅仅是你想要的字符集。您始终可以在应用程序层修复此问题。

票数 1
EN

Stack Overflow用户

发布于 2009-04-14 12:41:08

我会改用[^&]:

代码语言:javascript
复制
RewriteCond %{REQUEST_URI} ^/resultpage\.php$
RewriteCond %{QUERY_STRING} ^querystring=([^&]+)$
RewriteRule ^resultpage\.php$ /sok/%1? [R=301,L]

而且你仍然可以简化它:

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

使用这种解决方案,您甚至可以不使用第二个RewriteRule的a=1标志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/747145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档