.htaccess替代B旗? (逃避反向引用)

时间:2013-07-17 13:47:48

标签: php regex apache .htaccess mod-rewrite

我设置了一个.htaccess,其中包含以下内容:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?aid=$1 [L,QSA]

这可以很好地获取用户个人资料,但是如果他们的用户名是“apple& pears”,我会找不到404页面。我相信这是由于&符号的一些编码问题。我研究过并发现B标志可以解决这个问题,但是当引入它时我的主机的Apache版本低于2.2.7。

有没有方法可以复制这个?

1 个答案:

答案 0 :(得分:1)

有两个单独的规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^&]+)&([^/]+)/?$ /index.php?aid=$1\%26$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /index.php?aid=$1 [L,QSA]