【问题标题】:How do I redirect with mod_rewrite to a document and set the GET parameter?如何使用 mod_rewrite 重定向到文档并设置 GET 参数?
【发布时间】:2011-09-01 03:26:23
【问题描述】:

所以我直接说正事了。两者都在最新版本的 XAMPP(Windows 7 32 位)和 MAMP(OS X Snow Leopard)上进行了测试和确认。我有以下网站结构:

/op/.htaccess
/op/index.php
/op/profile.php

路径是来自 Apache 文档根目录的绝对路径。

我的 .htaccess 文件如下所示:

RewriteEngine on
RewriteRule ^[a-zA-Z0-9]+$ profile.php?alias=$1

当我通过 http://localhost:8888/op/ 请求站点时,文档 index.php 被打开。没关系。当我通过 http://localhost:8888/op/example 请求打开文档 profile.php 时,这也很好。并且设置了一个名称为 alias 的 GET 参数,就像想要的那样。但它的价值是空的!像这样:

http://localhost:8888/op/profile.php?alias=

所以我只想将 url 的最后一部分作为 GET 变量传递给服务器,它看起来像这样:

http://localhost:8888/op/profile.php?alias=example

我慢慢变得绝望了。自从两个半小时以来,我一直在与这个作斗争。要么是错误的服务器配置,要么是一个真正愚蠢的错误。我猜这是正则表达式,但我就是不明白。

【问题讨论】:

    标签: html apache .htaccess mod-rewrite webserver


    【解决方案1】:

    这是一个正则表达式,你的 htaccess 应该是这样的:

    RewriteEngine on
    RewriteRule ^([a-zA-Z0-9]+)$ profile.php?alias=$1
    

    字符串末尾的$1 匹配第一个子模式,但您没有指明任何子模式。第一组括号是第一个子模式。

    另外,您不妨注明RewriteBase

    RewriteEngine on
    RewriteBase /
    RewriteRule ^([a-zA-Z0-9]+)$ profile.php?alias=$1
    

    【讨论】:

    • 非常感谢!你是我今天的英雄!
    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多