前:
如果我们输入了这些网址(如此网站)
http://stackoverflow.com/questions/10139779/
或http://stackoverflow.com/questions/10139779
它会自动重定向到此网址http://stackoverflow.com/questions/10139779/handling-get-with-htaccess
我想从(10139779)
获取此代码url
并重定向到完整网址。有人会转到完整网址,了解如何获取此代码(10139779)
编辑:
我像这样创建了htaccess文件。
<Files .htaccess>
order allow,deny
</Files>
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(\w+)$ ./load.php?code=$1
现在我想在视频ID之后将视频标题提供给网址像这样www.example.com/16056/video-title
load.php
<?php
echo $_GET['code'];
//I can get video title from php then how to give to url it?
?>
我可以从www.example.com/16566
获取代码,但我无法通过此网址www.example.com/16566/video-title
获取代码
在id /
链接后无法正常工作。如何修理它
答案 0 :(得分:0)
这个答案是@ bjb568的答案的额外更新,它处理异常。
<?php
if(isset($_GET['code'])) {
$code = (int)$_GET['code'];
$url = '/videos/' . $code . '/' .getTheVideoTitle($code);
} else {
$url = '404_page_not_found.php'; // or redirect visitors to homepage
}
header("Location: $url");
exit;
?>
此外,这可以防止有人故意&#34; hack&#34;通过输入带有转义字符的字符串链接崩溃代码。 (当然,它是开发人员在getTheVideoTitle()
函数中验证输入的职责)
答案 1 :(得分:-1)
发送正确网址的位置标头。 ( load.php :)
<?php
header('Location: /videos/'.$_GET['code'].'/'.getTheVideoTitle($_GET['code']));
?>
你无法在.htaccess中获取视频标题,所以php必须这样做。
另外,对于.htaccess:
RewriteRule ^(\w+)$ ./load.php?code=$1
应该是:
RewriteRule ^(\w+)/*$ ./load.php?code=$1
这使得它匹配URL之后的斜杠。如果您还希望它与URL后面的标题匹配,请将其设为:
RewriteRule ^(\w+) ./load.php?code=$1