我有一个有两个参数的网址,我已经用htaccess文件重写了这个
RewriteRule ^subscriber/([^/.]+)/([^/.]+)/?$ subscriber/index.php?id=$1&name=$2 [NC,L]
在某些情况下,名称包含一个“/”,浏览器正在将其视为另一个参数并给我一个404页面。有没有办法使用htaccess文件将“/”替换为其他内容?
答案 0 :(得分:1)
尝试将其放入文档根目录中的htaccess文件中:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)name=([^&]*)/(.*)$
RewriteRule ^ %{REQUEST_URI}?%1name=%2-%3 [L]
# Change your existing rule a bit to account for the slash (plus a possible trailing slash):
RewriteRule ^subscriber/([^/.]+)/(.+?)/?$ /subscriber/index.php?id=$1&name=$2 [NC,L]
这将在订阅者/ ,id
参数和所有之后的URI中创建第一个“文件夹”,但尾部斜杠除外name
param。name
param。然后,第一组规则会重复清除/
参数,将-
替换为{{1}}。
答案 1 :(得分:0)
设置名称变量
时,可以使用urlencode()函数$name = 'Michael/';
$name = urlencode($name);
// will return you Michael%08 or something like this
因此,使用this question .htaccess的解决方案可能是:
RewriteEngine On
RewriteCond %{REQUEST_URI} (.*)\\(.*)
RewriteRule .* %1/%2 [R=301]