如何仅将URL中的%20更改为hypen(-)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何仅将URL中的%20更改为hypen(-)相关的知识,希望对你有一定的参考价值。

您好,我试图使我的网址尽可能干净,但是遇到了问题...

当我的.htaccess文件尝试读取我的get请求并且有一个空格(%20)时,它给出了内部错误。因此,我打算将%20更改为-,然后您将得到如下内容:

site.com/my-organisation/this-is-a-test

代替此:

site.com/my%20organisation/this%20is%20a%20test

最后,我成功地从%20替换为-,该文件无法识别GET,因为在数据库中它是用空格写入的。

我只希望它在URL中更干净而不更改get请求。

如果有人想帮助我,我将不胜感激!

〜我的.htaccess文件

RewriteEngine on

# clean up file extensions .php only
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

# clean test url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteRule ^organisation/make-test/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+) organisation/make-test.php?organisation=$1&test=$2 [QSA]

# clean organisation url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteRule ^organisation/([0-9a-zA-Z_-]+) organisation/index.php?organisation=$1 [QSA,L]

如果需要更多信息,请发表评论:)

答案

据我所知您无法使用重写更改此设置。

我唯一可以建议的是使用urlencode() / urldecode()而不是rawurlencode() / rawurldecode()。这意味着您将看到site.com/my-organisation/this+is+a+test而不是site.com/my%20organisation/this%20is%20a%20test

但是,您可以使用类似这样的函数,然后自行解码$_GET[]变量。

function cleanurldecode($getVar)
{
    return str_replace('-',' ',$getVar);
}

以上是关于如何仅将URL中的%20更改为hypen(-)的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 仅将“0”的值更改为字符串“免费”

无法仅将USB连接更改为充电

仅将月份从'jan'更改为1,'feb'更改为2,'mar'更改为3 ...'dec'更改为12 [重复]

是否可以仅将通用应用程序上传到应用商店后才能将其更改为iphone?

jquery tokenInput如何将ajax调用url动态更改为脚本

如何删除关于 n_estimators 的未来警告将从 0.20 版本中的 10 更改为 0.22 中的 100?