【问题标题】:using .htacces to rewrite URLs with query strings使用 .htaccess 重写带有查询字符串的 URL
【发布时间】:2012-05-19 15:27:11
【问题描述】:

我有一个页面是 www.example.com/page_name.php?var1=dynamic_var1&var2=dynamic_var2

我想使用 .htaccess 文件使它看起来像这样 www.example.com/page_name/dynamic_var1/dynamic_var2

到目前为止我已经尝试过了

RewriteRule ^page_name/(.*)/(.*)$ page_name.php?var1=$1&var2=$2 [NC]

问题是当它进入数据库时​​它是这样的

SELECT * FROM table_name WHERE id=dynamic_var1/dynamic_var2.php/dynamic_var1 LIMIT 1

我也试过了

RewriteRule page_name/(\w+)/(\w+) page_name.php?var=$1&var2=$2

它正在加载页面但没有任何图片或css文件或任何东西,当我使用firebug时它说它无法加载给定的URL。

当我尝试这个时

RewriteRule ^page_name/(\w+)/(\w+)$ page_name.php?var=$1&var2=$2

它给了我内部服务器错误

提前致谢,

【问题讨论】:

    标签: php .htaccess query-string


    【解决方案1】:

    不要尝试从 .htaccess 文件中拆分 URL。您为什么不尝试简单地将整个查询字符串传递给您的 index.php 或您想要的任何其他脚本并在那里解析请求...

    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
    

    一个更简单的方法是简单地将所有请求重定向到一个 index.php 文件中,该文件执行类似这样的操作 -

    index.php-

    给定http://yourdomain.com/user/123

    $originalURL = $_GET['url'];
    $URLParts = explode('/',$originalURL);
    

    现在你有$URLParts的内部了

    Array (
     'user',
     '123'
    )
    

    现在您可以轻松地将这些值放入 SQL 查询中。

    注意 SQL 注入!始终使用mysql_real_escape_string() 并确保清理所有传入数据...

    【讨论】:

    • 非常感谢您的回答,您真的挽救了一天,只剩下 9 分钟接受答案
    猜你喜欢
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2012-09-19
    • 2016-02-13
    • 2020-06-04
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多