我的PHP文件会查找网址参数id
,以使网址如下所示:
www.example.com/player.php?id=player_name
其中player_name是id。我使用.htaccess清理了URL,因此URL看起来像这样:
www.example.com/Player/player_name/
除了我传入一个玩家ID,例如#octothorpe(编码为%23octothothpe)之外,情况一直很好。由于某种原因,它仍然作为URL中的片段读取并被服务器忽略,因此当PHP文件查找id
时,它无法找到它。有趣的是,如果我使用丑陋的URL
www.example.com/player.php?id=%23octothorpe
它的作品完全没问题,但是当我做的时候
www.example.com/Player/%23octothorpe
无法找到id
.htaccess文件的相关部分如下:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteRule ^Player/(.*)/$ player.php?id=$1
RewriteRule ^Player/(.*)$ player.php?id=$1
答案 0 :(得分:0)
问题是url片段没有传递给apache服务器。在查询字符串参数中使用它的地方,它不被视为url片段,这就是它工作的原因。
Why the hash part of the URL is not in the server side?
如果您的ID包含哈希字符,则需要为您的网址考虑另一种策略。解决方案实际上取决于您应用程序的更广泛背景。
答案 1 :(得分:0)
RewriteRule ^Player/(.*)/$ player.php?id=$1
成了
RewriteRule ^Player/(.*)/$ player.php?id=$1 [B]