簡體   English   中英

使用 PHP 編碼(相對)URL 的正確方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM