我正在尝试使用PHP编码以下相对URL:
/tracks/add/5449326
我尝试过使用rawurlencode和urlencode。
这使它看起来像:%2Ftracks%2Fadd%2F5449326
我将在AJAX调用中使用此URL。
我尝试拨打的网址是:
/overlay/add-track/{param1}/{param2}
{param1}只是一些id
{param2}是已编码的网址
然而,当我尝试拨打电话时,我得到了404。
从它的外观来看,它试图打电话给:
/overlay/add-track/1//tracks/add/5449326
所以看起来它正在尝试访问已解码的字符串。
任何想法如何解决这个问题?
PHP
$url = rawurlencode('/tracks/add/5449326');
echo '<a href="/overlay/add-track/1/'.$url.'">Add</a>';
JS(jQuery) var href = $('a')。attr('href');
$.ajax({
url: href,
type: 'POST',
data: {},
dataType: "json",
success: function(data)
{
// do stuff
}
});
修改
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} \.(eps|js|ico|gif|jpg|png|css|jpeg|doc|xls|doc|pdf|txt|ppt|zip)$
RewriteRule ^(.*)$ $1 [L]
RewriteCond "/path/public/%{REQUEST_URI}" !-f
RewriteRule ^(.*)$ /index.php/$1 [L]
答案 0 :(得分:0)
网络服务器可能不允许使用编码的斜杠,从而产生默认的404.
对于apache,请参阅:
http://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes
要么需要更改apache配置,要么通过用其他东西替换斜杠/反斜杠来解决它。
编辑: 您可以尝试使用双重urlencode,然后在javascript中尝试decodeURI()。