【问题标题】:htaccess get code and redirect with phphtaccess 获取代码并使用 php 重定向
【发布时间】:2014-06-05 02:21:19
【问题描述】:

例如:

如果我们输入了这些网址(喜欢这个网站)

http://stackoverflow.com/questions/10139779/http://stackoverflow.com/questions/10139779

它会自动重定向到这个网址http://stackoverflow.com/questions/10139779/handling-get-with-htaccess

我想从url 获取此代码(10139779) 并重定向到完整的网址。有人去完整的网址如何获取此代码(10139779)

编辑:

我创建了这样的 htaccess 文件。

<Files .htaccess>
order allow,deny
</Files>

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(\w+)$ ./load.php?code=$1

现在我想在视频 id 之后为 url 赋予视频标题就像这样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 获取代码,但我无法从该 URL www.example.com/16566/video-title 获取代码

在 id / 链接失效后。如何解决它

【问题讨论】:

  • 请检查我编辑的帖子。
  • 查看了您的代码。 PHP的内容是什么?此外,只有.htaccess 无法阅读您的“视频”标题。必须在 PHP 中完成
  • 检查上次编辑。如果你能帮助我..谢谢...

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:

这个答案是@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;
?>

此外,这可以防止有人通过输入带有转义字符的字符串来故意“破解”链接并导致代码崩溃。 (当然,验证getTheVideoTitle() 函数中的输入是开发人员的职责)

【讨论】:

  • 我的代码可以处理得很好。它将转到/videos//null,然后是 404。
  • .htaccess 上面没有提到任何关于 404 页面的内容。另外,如果输入字符是转义字符怎么办?
  • 然后什么都没有。重定向到随机页面是可能发生的最糟糕的情况,鉴于用户可能试图破解您,这并不重要。
  • 如果没有设置 GET 变量,如果启用了display_errors,屏幕上会显示一个警告,这使得header("Location: "); 失败,因为 header 已经发送。
  • 'Location: /videos/'.$_GET['code'].'/'.getTheVideoTitle($_GET['code']) --> 'Location: /videos//' 我看不出警告来自哪里。
【解决方案2】:

发送正确 URL 的位置标头。 (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

【讨论】:

  • 如果你可以请检查最后编辑。现在你可以理解这一点了。谢谢
  • 您的意思是您需要帮助来获取视频标题吗?
  • 在/(斜线)链接后不起作用(example.com/165655/
  • 如果你可以检查这个网址col3negmovie.com/test/hta/16589 现在这是可行的,但这是不可行的col3negmovie.com/test/hta/16589
  • 您编辑的帖子很好。但是在/(斜线)之后我输入了一些东西现在它不起作用:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 2014-05-25
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多