当值中出现空格时,无法进行 URL 重写


can't work url rewrite when a space occured in a value

当我传递包含空格的值时,我的URL重写不起作用(比如新德里) 查看我的代码

RewriteRule top-indian-cities-states-('d+)/(.*)/ top-indian-cities-states.php?id=$1&top=$2

当第二个参数变为新德里时,它不起作用

mydomain/top-indian-cities-states-1/New-delhi-Hotel

我已将变量作为

$name="New Delhi";
$displayName=trim($name." Hotel");
        $urlVal=str_replace(" ","-",$displayName);
<li><a href="top-indian-cities-states-1/<?=$urlVal?> /"><?=$name?> Hotel</a></li>

此外,当我请求第二个参数时,我得到了值 twise即

echo $_REQUEST['id']; Results in `1` it's correct 
echo $_REQUEST['top'];  Results in `Kerala-Hotel/Kerala-Hotel`  is it correct . i need to get the value only one .

有人有想法吗?

请重播

提前致谢

好吧,您在城市名称后指定了一个尾部斜杠,但您的示例中没有它(不允许使用空格)。

2 种解决方案:

  1. 将尾部斜杠添加到正则表达式:

    RewriteRule top-indian-cities-states-('d+)/(.*)/? top-indian-cities-states.php?id=$1&top=$2
    
  2. 将尾部斜杠添加到变量

    $urlVal=str_replace(" ","-",$displayName);
    $urlVal=. "/";
    

    并将斜杠放在 HTML 中。

像这样尝试重写规则

RewriteRule top-indian-cities-states-('d+)/(.*)$ top-indian-cities-states.php?id=$1&top=$2

<li><a href="top-indian-cities-states-1/<?=$urlVal?> /"

还要删除上面行中双引号前的/。给它作为

<li><a href="top-indian-cities-states-1/<?=$urlVal?>"

试试这个:

$urlVal=trim(str_replace(" ","-",$displayName));
<li><a href="top-indian-cities-states-1/<?=$urlVal?>/"><?=$name?> Hotel</a></li>