【问题标题】:htaccess rewrite rule (arbitrarily path to index.php)htaccess 重写规则(index.php 的任意路径)
【发布时间】:2013-04-29 10:17:02
【问题描述】:

是否有可能有一个模式来表示任何路径序列,用一个包含给定路径的参数替换我的 index.php?

我有这个规则 RewriteRule ^([^/.]+)$ /index.php?page=$1 [L]

这样就可以用另一个“目录”扩展我的 URL:例如 www.example.com/Home。它重定向到 index.php,get 变量显示“Home”。

现在我想改进这一点,所以可以做类似 www.example.com/path/to/somewhere 的事情,它也重定向到我的 index.php 并且变量显示“path/to/somewhere”。它应该允许使用任意数量的斜杠和“目录”条目。 但!所有以文件结尾的 URL,即 www.example.com/path/to/file.pdf 都应该不受此重写规则的影响。

我怎样才能做到这一点?

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting rewrite


    【解决方案1】:

    尝试关注一个

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(.*)$ index.php?path=$1 [NC,L]
    

    在index.php中,访问路径如下

    <?php
    echo $_GET['path'];
    ?>
    

    【讨论】:

    • 页面变量总是显示 index.php,而不是更多。甚至 *.jpg 和其他 url 也会被重定向到 index.php。
    • 更新了我的答案,请在最后查看
    • 又是坦克。现在变量始终为空,文件仍被重定向。
    • 它在我的环境中工作得非常好,我已经在答案中粘贴了我的 index.php 的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2017-07-22
    • 2014-10-27
    • 2014-01-08
    相关资源
    最近更新 更多