是否可以从虚拟URL中提取var,在meta中使用它,但显示原始的虚拟URL?

时间:2015-09-30 22:24:33

标签: javascript php .htaccess mod-rewrite

假设我有以下网址:example.com/123456

该网址没有指向任何内容 - 123456是一个变量 使用PHP和/或htaccess我想知道我是否可以:

  1. 获取“123456”var
  2. 将var推送到元标记中 example.com/index.php
  3. 在地址栏中显示原始网址, 但是显示内容是从example.com/index.php重定向的(123456是 忽略了,它只是一个虚拟网址。)
  4. 我能做1& 2用htaccess重写。我有一种感觉,我可以通过javascript做#3,但我想知道是否有一个更清洁的解决方案,不会使地址栏更改超过需要。另外,我不想成为hacky - 我想知道这是否是一个合法的过程?

    这是我迄今为止所拥有的.htaccess:

    RewriteEngine on
    RewriteRule ^([A-Za-z0-9\+/=]+)$ ?t=$1 [NC,R=301,L]
    

    对于index.php,我只是使用:

    <meta name="foo" content="https://example.com/<?php echo $_GET['t'] ?>" />
    

    这一切都有效,但为了获取php中的meta var,url会更改为example.com/?t=123456。我想显示虚拟网址:example.com/123456,但显示来自example.com/index.php的内容

    我的问题与可能的重复之间的区别在于我已经在使用重写了。另见我的问题的答案,可能的副本中没有提到。

1 个答案:

答案 0 :(得分:0)

解决了我的问题是使用[PT]标志而不是[R = 301]标志。 [PT]表示“passthrough”,允许您在不更改地址的情况下显示新URL。我正在使用的新.htaccess代码:

RewriteEngine on
RewriteRule ^([A-Za-z0-9\+/=]+)$ ?id=$1 [NC,PT,L]

感谢Tiny Giant的有用链接,并指出我正确的方向: http://httpd.apache.org/docs/2.4/rewrite/remapping.html