【问题标题】:Getting variable from pretty url从漂亮的网址获取变量
【发布时间】:2012-08-18 22:54:03
【问题描述】:

我以前做过非常相似的事情,但由于某种原因,我在特定场景中遇到了一些困难。我想将文件夹路径作为变量传递并让它看起来很漂亮。

我有一个有效的网址,例如:

http://mysite.com/albums/index.php?p=folder/subfolder/

我可以在没有 'index.php' 的情况下查看它:

http://mysite.com/albums/?p=folder/subfolder/

我想要的是一个漂亮的 url,看起来像这样:

http://mysite.com/albums/folder/subfolder/

基本上,/albums/ 之后的任何内容都应该是一个变量。我玩过我的 .htaccess RewriteRule 一堆,但似乎无法让它工作。 (得到 404 错误)这是我目前拥有的:

RewriteEngine On
RewriteRule ^albums/(.*)$ albums/?p=$1

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    下面是我使用的,虽然每个调用都指向我的 index.php 文件,然后我用它做任何事情

      Options +FollowSymLinks
      RewriteEngine On
    
      RewriteCond %{SCRIPT_FILENAME} !-d
      RewriteCond %{SCRIPT_FILENAME} !-f
    
      RewriteRule ^.*$ ./index.php
    

    希望对你有帮助

    【讨论】:

    • 它似乎没有将变量传递给我的页面。我用它来检查“if (!isset($_GET['p']))”。不过,我也许可以对其进行调整以满足我的需求,我会继续努力。谢谢。
    • 不,它所做的并不是所有 url 请求都发送到您的根索引文件,您现在可以像这样 $url = $_SERVER['REQUEST_URI'] 执行 sumtin,现在可以像这样拆分 $params = explode("/", $url);
    • 感谢 omoabobade,通过使用您提出的建议,我能够弄清楚我想要做什么。
    【解决方案2】:

    (.*) 更改为 (.+) 以确保在 / 之后至少有一个字符,否则您的规则会循环...

    【讨论】:

    • 我尝试了您的建议,但收到 500 错误。我会进一步调查(。+),也许通过一些调整我会弄明白的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 2012-03-07
    • 1970-01-01
    • 2017-07-27
    • 2011-02-04
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多