首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重写PHP查询字符串?

重写PHP查询字符串?
EN

Stack Overflow用户
提问于 2015-12-21 23:09:22
回答 2查看 2.6K关注 0票数 0

我已经搜索了其他解决方案来使用位于服务器根部的.htaccess文件重写URL,但是这种语言让我非常困惑,而且我似乎无法让它工作。我该如何改变:

代码语言:javascript
运行
复制
http://domain.com/share.php?media=059ogbuq70

至:

代码语言:javascript
运行
复制
http://domain.com/059ogbuq70

我找到了类似于此的代码,并尝试了它,但它似乎不起作用:

代码语言:javascript
运行
复制
RewriteEngine on
RewriteCond %{QUERY_STRING} ^media=([0-9]+)$
RewriteRule ^$ share.php?media=$1 [QSA,L]

我的PHP:

代码语言:javascript
运行
复制
<?php
$media_id = $_GET['media'];
$url = file_get_contents("https://api.wistia.com/v1/medias/" . $media_id . ".json?api_password=my_key");
$json = json_decode($url, true);
$name = $json[name];
$origimg = $json['thumbnail'][url];
list($image, $size) = explode('?', $origimg);
$video = $json['assets'][5][url];
?>

然后,我在页面上echo需要它们的变量。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-21 23:30:10

为了在内部重写“漂亮”URL,以便将查询字符串传递给PHP,我建议使用以下.htaccess文件:

代码语言:javascript
运行
复制
RewriteEngine on
RewriteRule ^([^/]+)/?$ share.php?media=$1 [L]

regex匹配:

一个或多个不是反斜杠的字符,可选地后面跟着反斜杠。

除了可选的尾斜杠之外,所有内容都在$1中捕获,并将其重写为"media“查询字符串变量。

例如:

http://domain.com/059ogbuq70/ 在内部重写到 http://domain.com/share.php?media=059ogbuq70

这意味着:

$_GET['media'] =059ogbuq 70

您可能会发现这个重写备忘单对于构建正则表达式有帮助。

还有,你可以在这里测试您的重写

票数 1
EN

Stack Overflow用户

发布于 2015-12-21 23:34:04

您需要two规则来执行您想要做的事情。您可以将其放入名为.htaccess的文件中。

代码语言:javascript
运行
复制
RewriteEngine on

#redirect all old URLs to the new rewritten URL
RewriteCond %{THE_REQUEST} ^GET\ /+share\.php\?media=([^&\ ]+)
RewriteRule ^ /%1? [R=302,L]

#rewrite folder path internally to share.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ share.php?media=$1 [QSA,L]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34405922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档