【问题标题】:mod_rewrite /$variable/file.phpmod_rewrite /$变量/file.php
【发布时间】:2014-01-12 04:32:28
【问题描述】:

我一直在尝试这样做,但我无法产生任何结果。我正在尝试将一个变量重写为多个文件的 url 中的“目录”。我最好解释一下这就是我的意思。

无需重写:

/index.php?var=test

/admin/panel.php?var=test

/faq.php?var=test

/directory/test.php?var=test

随着重写:

/test/index.php

/test/admin/panel.php

/test/faq.php

/test/directory/test.php

我也希望能够将其他变量传递给文件。示例:

/test/index.php?user=1&session=1233445

我意识到我可以为每个物理文件和目录执行重写规则。但我希望它是动态的,因此如果我将文件添加到我的站点,我不必继续编辑 .htaccess 文件。任何帮助,将不胜感激。谢谢!

【问题讨论】:

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


    【解决方案1】:

    试试:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/(.*?/?)(index|panel|faq|test)\.php$ /$2$3.php?var=$1 [L,QSA]
    

    【讨论】:

    • 嗨,乔恩,它仅适用于主目录中的文件。我正在寻找它也可以动态地为真实目录工作。/test/directory/file.php 而且我没有指定我希望将变量也传递给任何类型的文件。谢谢!
    • 乔恩,我们越来越近了,但我没有达到我想要的结果。我只想将“var”传递给所有真实目录中的所有真实文件。您提供的代码不断重写到主目录。我需要将“var”传递给所有文件,无论它们的名称是什么,也无论扩展名是什么......再次感谢您的回复。如果我的解释有点混乱,我很抱歉..
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 2010-12-02
    • 2011-04-04
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多