【问题标题】:apache url rewriting for random number [closed]apache url重写随机数[关闭]
【发布时间】:2013-12-05 02:46:34
【问题描述】:

问题是我基于 GET 方法捕获我的 url...所以我的 url 看起来像

localhost/test/index.php?vic=24

其中 vic 是可变的...

我的网站上还有一个按钮,每次都会随机分配我的 vic。

<a href="'.htmlentities($_SERVER['PHP_SELF']).'?vic='.randomVic($link).'">

请注意,randomVic($link) 是一个每次都返回随机数的函数。

我想要实现的是我的网址看起来像

localhost/test/index.php?vic=24 -> localhost/test/24

对每个随机数以此类推。 我真的需要帮助,我尝试了许多.htacces mods 进行重写(条带化.php,删除索引,......)但它们都没有像我需要的那样工作。

谢谢!

【问题讨论】:

  • “我尝试了许多.htacces mods 来重写” - 真的吗?这是我看到的最简单的正则表达式重写之一。请向我们展示您的代码,这不起作用。
  • 在我看来,重写规则会变得更加清晰,如果您不再认为它们会使丑陋的 URL 变得漂亮,而是开始考虑使漂亮的 URL 变得丑陋:您的 HTML 应该有漂亮的版本 (@987654325 @) 然后您的 Apache 规则匹配 /test/ 后跟任意数字,并将其替换到 /test/index.php?vic= 的末尾 - 这确实与重写规则一样简单。
  • RewriteEngine On RewriteCond %{THE_REQUEST} \?[^\ ]+ RewriteRule ^xampp/vic/([0-9]+)$ index.php?vic=$0 我在 xampp 上收到服务器错误完整路径是:localhost/xampp/vic/index.php?vic=54

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

启用mod_rewrite.htaccesshttpd.conf(如果尚未启用),然后将此代码放入您的DOCUMENT_ROOT/vic.htaccess 文件

RewriteEngine On
RewriteBase /vic/

RewriteCond %{THE_REQUEST} \s/+vic/index\.php\?vic=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]

RewriteRule ^([0-9]+)/?$ index.php?vic=$1 [L,QSA,NC]

【讨论】:

  • goo.gl/BqGdxh 点击一个骰子...什么也没有发生...我把你的代码放在 .htacces 中
  • 啊有一个错字。修好了,现在可以试试吗?
  • 404错误如你所见
  • 上面的htaccess文件在什么位置?还有其他现有的规则吗?
  • 不,没有其他重写 url...我把它放在我的 root/vic 目录中
【解决方案2】:
RewriteRule ^test/([0-9]+)$ index.php?vic=$1

根据下面的评论进行了编辑

【讨论】:

  • 也许这对我不起作用的原因是因为我每次都使用方法 GET 来获取 vic.... 我应该切换到隐藏输入的方法 POST 吗?
  • 如果我把你的重写规则我在 xampp 完整路径上得到服务器错误是:localhost/xampp/vic/index.php?vic=54 我将测试更改为 vic/
猜你喜欢
  • 2013-12-01
  • 2014-09-27
  • 1970-01-01
  • 2016-07-05
  • 2012-10-02
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2021-02-25
相关资源
最近更新 更多