htaccess获取代码并使用php重定向

时间:2014-04-06 01:34:47

标签: php apache .htaccess mod-rewrite redirect

前:

如果我们输入了这些网址(如此网站)

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 /链接后无法正常工作。如何修理它

2 个答案:

答案 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