我已经在我的服务器根目录下搜索了使用.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
在我的页面上需要它们的变量。
谢谢!
答案 0 :(得分:1)
要在内部重写“漂亮”的URL以便将查询字符串传递给PHP,我建议使用以下.htaccess
文件:
RewriteEngine on
RewriteRule ^([^/]+)/?$ share.php?media=$1 [L]
正则表达式匹配:
一个或多个不是反斜杠的字符,可选地后跟反斜杠。
除了可选的尾部斜杠之外的所有内容都在$1
中捕获并重写为“media”查询字符串变量。
例如:
http://domain.com/059ogbuq70/
内部重写为http://domain.com/share.php?media=059ogbuq70
这意味着:
$_GET['media']
= 059ogbuq70
您可能会发现mod_rewrite cheat sheet有助于构建正则表达式 此外,您可以test your rewrites在这里。
答案 1 :(得分:0)
您要执行的操作需要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]