如何在.htaccess中处理多个空格分隔的单词?

时间:2011-11-05 15:53:59

标签: regex .htaccess

我在.htaccess中有以下代码,它适用于名称只有一个单词的页面。但是由于包含多个单词的页面名称失败了。

RewriteEngine on
RewriteRule ^(.*)/$ /index.php?page=$1 [L]

我使用结束斜杠表示需要重写url,以避免弄乱真正的文件名。

问题可能与空格是url编码为%20的事实有关。

有关如何更改正则表达式或.htaccess的任何建议吗?

1 个答案:

答案 0 :(得分:1)

RewriteRule documentation包含您可以设置的标记列表。在这种情况下,总是值得一读。

似乎你可能需要B标志:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php?page=$1 [B,L]

B标志告诉Apache在替换的反向引用中转义非字母数字字符,这显然是你想要的。

另外,如上所述添加RewriteCond s提供了一种更安全的方法来避免重写正在请求的真实文件名(如图像)的URL,正如Michael所说。