[英]Proper way to encode a (relative) URL using PHP
我正在嘗試使用 PHP 對以下相對 URL 進行編碼:
/tracks/add/5449326
我試過使用 rawurlencode 和 urlencode。
這使它看起來像: %2Ftracks%2Fadd%2F5449326
我將在 AJAX 調用中使用這個 URL。
我試圖撥打的 URL 是:
/overlay/add-track/{param1}/{param2}
{param1} 只是一些 id
{param2} 是編碼的 url
但是,當我嘗試撥打電話時,我得到了 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]
網絡服務器可能不允許編碼的斜杠導致默認的 404。
對於 apache 參見:
http://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes
apache 配置需要更改,或者您需要通過用其他東西替換斜杠/反斜杠來解決它。
編輯:您可以嘗試雙 urlencode,然后在 javascript 中 decodeURI()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.