【问题标题】:Apache presenting virtual subdirectories and passing parameters to PHP scriptApache 呈现虚拟子目录并将参数传递给 PHP 脚本
【发布时间】:2012-04-28 09:40:25
【问题描述】:

我的根目录包含一系列 PHP 文件:index.php、about.php 等。每个文件都可以带一个 ID 参数来自定义页面上的一些变量,例如联系电话号码、电子邮件地址等.

如果访问者要访问http://myserver/joebloggs(joebloggs 是一个参数,而不是子目录),我希望他们使用根目录中的 index.php 页面提供服务,但要将 joebloggs 传递给 index.php 。 php 作为 ID,然后自定义页面。我不想为每个用户 ID 创建一个子目录,我宁愿在数据库中维护这些信息并让 PHP 为我生成页面。

此外,当用户导航到 about.php 页面时,我希望保留此 ID,然后也自定义 about 页面,即指向“about”的链接维护 URL 中的 ID 参数: http://myserver/joebloggs/about/

我有一个粗略的想法如何做到这一点,并且一直在阅读 mod_rewrite 但在将各种解决方案拼凑在一起时运气不佳。

任何指点或帮助将不胜感激。

【问题讨论】:

    标签: php apache mod-rewrite


    【解决方案1】:

    试试这样的:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} \/(.+?)\/about
    RewriteRule . /about.php?p1=%1 [L]
    
    RewriteCond %{REQUEST_URI} \/.*?
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*?)$ /index.php?p1=$1 [L]
    

    应该做的工作。在我的服务器上测试过。

    【讨论】:

    • 谢谢 - 太好了。但是,我确实必须删除页面名称之前的前导 / 才能在我的服务器上运行。非常感谢
    • 这就是 mod_rewrite 的问题,它可以在不同的设置上以不同的方式工作;)太好了,你设法让它工作了;)
    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 2010-10-18
    • 2014-10-25
    相关资源
    最近更新 更多