向网址添加尾部斜杠

use*_*039 5 php mod-rewrite

我正在尝试使用PHP向URL添加尾部斜杠.因为我在.htaccess中有类似的东西,所以无法用mod_rewrite完成:

RewriteRule ^page/(.*)$ index.php?page=$1 [L]
Run Code Online (Sandbox Code Playgroud)

我想验证页面是否存在于301重定向与斜杠之前.

现在我在验证后使用此代码:

if(substr($_GET['page'], -1) !== '/')
  header('Location: http://example.com/'.$_GET['page'].'/'.$_SERVER['QUERY_STRING'],TRUE,301);
Run Code Online (Sandbox Code Playgroud)

但有没有更好的方法?

Bun*_*nty 14

简单的方法是只删除url末尾的斜杠并添加它

$str = "http://yoursite.com/testpage"; 

OR 

$str = "http://yoursite.com/testpage/";


echo rtrim($str,"/").'/';
Run Code Online (Sandbox Code Playgroud)

  • 你聪明的狗:-) (2认同)
  • 不适用于: $str = "http://yoursite.com/testpage?id=1" (2认同)

Gum*_*mbo 6

您已经有了最好的解决方案。我只会使用$_SERVER['REQUEST_URI']而不是已经解析的$_GET['page']and $_SERVER['QUERY_STRING']

if (substr($_GET['page'], -1) !== '/') {
    $parts = explode('?', $_SERVER['REQUEST_URI'], 2);
    $uri = 'http://example.com'.$parts[0].'/'.(isset($parts[1]) ? '?'.$parts[1] : '');
    header('Location: '.$uri, true, 301);
    exit;
}
Run Code Online (Sandbox Code Playgroud)