URL重写和保存URL为变量的结束(URL Rewriting and save end of UR

2019-10-18 17:56发布

我使用的URL重写有艺术家/(ARTISTNAME)去艺术家/ index.php的?(ARTISTNAME)。

我用这个代码做URL重写

RewriteRule    ^artists/(.+)$    artists/index.php?$1 

然后我用这个代码来获取后的URL的一部分? 并将其保存为一个可变

$pageURL = 'http';
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
$artist = parse_url($pageURL,  PHP_URL_QUERY);

该代码工作的时候,不使用URL重写,而不是当我使用它。 我已经通过回$艺术家检查它。 有谁知道什么可能会错了吗?

Answer 1:

您的重写规则需要修复。 它看起来像你的规则可能会导致重定向循环,这将导致一个服务器的500错误,惊讶的是,事实并非如此。 尝试更多的东西这样。

RewriteCond %{REQUEST_URI} !^/artists/index.php.*
RewriteRule ^artists/(.+)$    artists/index.php?$1 [L]

条件语句应该从循环消除规则。 另外的[L]标志添加到规则来从在该点处理更多的停止规则。



Answer 2:

因为你的新重写规则,摆脱掉PARAMS你parse_url的网址querys不会工作。 您可以尝试,而不是:

$artist = basename(parse_url($pageURL,  PHP_URL_PATH));


Answer 3:

最后我用不同的方式来获取工作的URL

$artist = $_SERVER["REQUEST_URI"];
$artist = substr($artist, 9, -1);


文章来源: URL Rewriting and save end of URL as variable