我已经搜索了其他解决方案来使用位于服务器根部的.htaccess文件重写URL,但是这种语言让我非常困惑,而且我似乎无法让它工作。我该如何改变:
http://domain.com/share.php?media=059ogbuq70
至:
http://domain.com/059ogbuq70
我找到了类似于此的代码,并尝试了它,但它似乎不起作用:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^media=([0-9]+)$
RewriteRule ^$ share.php?media=$1 [QSA,L]
我的PHP:
<?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
需要它们的变量。
谢谢!
发布于 2015-12-21 15:30:10
为了在内部重写“漂亮”URL,以便将查询字符串传递给PHP,我建议使用以下.htaccess
文件:
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
您可能会发现这个重写备忘单对于构建正则表达式有帮助。
还有,你可以在这里测试您的重写。
发布于 2015-12-21 15:34:04
您需要two
规则来执行您想要做的事情。您可以将其放入名为.htaccess
的文件中。
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]
https://stackoverflow.com/questions/34405922
复制