【问题标题】:How to load a specific page for any given pathname URL如何为任何给定的路径名​​ URL 加载特定页面
【发布时间】:2013-12-19 01:17:01
【问题描述】:

假设我有一个名为 www.mysite.com 的网页


我怎样才能做到这一点,每当页面像www.mysite.com/58640(或任何随机数)一样加载时,它都会重定向到www.mysite.com/myPHPpage.php?id=58640


我对网站开发非常陌生,所以我什至不知道我是否正确地提出了这个问题,或者在其中标记什么语言......



如果它有助于我使用 UNIX 服务器通过 NetWorkSolutions 进行网络托管

【问题讨论】:

  • 在您的进一步研究中包含mod_rewrite
  • 要么使用重写规则,要么使用自定义 404 处理程序(我选择的工具,因为它具有静态 apache 设置,并且路由决策在 PHP 中完成)
  • @EugenRieck Custom 404 感觉就像是一种黑客/功能滥用。但我必须说,用 PHP 做所有事情听起来很不错。
  • @jeroen 当然,您并没有真正返回 404!您使用自定义处理程序捕获 404,然后返回 200

标签: php ajax web server-side web-hosting


【解决方案1】:

将此添加到您网站主目录中的 .htaccess 文件中。

RewriteEngine on
RewriteBase /
RewriteRule ^([0-9]+)$ myPHPpage.php?id=$1 [L]

简要说明:它说匹配:

  • ^ 从查询/页面开始
  • [0-9] 个匹配数字
  • + 1 个或多个匹配项
  • $ 请求页面结束

括号部分表示查找该位并存储它。然后我可以在新的 url 中引用这些替换变量。如果我有多个括号组,那么我将使用 $2、$3 等等。

如果您在使用 .htaccess 文件时遇到问题,请参考this,因为权限可能会导致问题。

如果您需要捕获其他内容,例如字母数字字符,您可能需要稍微探索一下正则表达式。您可以执行以下操作:

RewriteRule ^(.+)$ myPHPpage.php?id=$1 [NC, L]

匹配任何内容或更具体的内容,例如 [a-zA-Z0-9] 等。

编辑: 和@Jonathon 有一个观点。在您处理 $_GET['id'] 的任何地方的 php 文件中,如果用于类似 sql 查询或邮件的任何内容,请务必对其进行清理。由于您只使用了简单的数字:

$id = (int)$_GET['id']; // cast as integer - any weird strings will give 0

请记住,如果您不打算只使用数字,那么您将不得不寻找一些清理功能(在谷歌上比比皆是 - 搜索“php sanitize”)以确保您不会陷入 sql 注入攻击。

【讨论】:

  • 然后,看在 $DEITY 的份上,请不要在未经清理的 SQL 查询中使用 $_GET['id']
  • @JonathonReinhart 当您说消毒时,您的意思是像反斜杠之类的东西?还有……谢谢亚舒亚!?!??!?!顺便说一句,这是 [0-9] 的事情 RegEx 吗?如果我想要字母数字而不是数字怎么办?谢谢!
  • 我将代码添加到我的 .htaccess 中,然后添加了一个虚拟 php 页面标题 myPHPpage.php,然后导航到 www.mysite.com/230498,但出现 404 错误。
  • 太好了,我已经相应地更新了我的答案,是的,这就是 RegEx
猜你喜欢
  • 2022-11-18
  • 2012-09-08
  • 1970-01-01
  • 2012-02-24
  • 2021-07-17
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2012-11-25
相关资源
最近更新 更多