【问题标题】:Redirect everything to index.php without changing url将所有内容重定向到 index.php 而不更改 url
【发布时间】:2015-11-25 15:39:15
【问题描述】:

我正在疯狂地尝试完成这项工作。我正在计划对我的整个网站进行相当复杂的重新设计。由于我的网站应该根据您尝试访问的子文件夹(例如 www.mydomain.com/test123)而有所不同,我认为最简单的解决方案是将每个请求重定向到主 index.php 并从那里处理所有案例。我还想重定向图像和 css 文件等,因为我也会“手动”处理这些情况。

这正是它应该做的:

  1. 它应该将每个请求重定向到根文件夹中的 index.php
  2. 它应该将第一个斜杠之后的所有内容作为查询参数传递。 (mydomain.com/test123 --> mydomain.com/index.php?q=test123)
  3. 此重定向对客户端不可见。在上面的示例中,这意味着它应该保留 /test123 但服务器 应该收到 /index.php?q=test123

我已经尝试过了,但这不会以某种方式工作......

RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^(.*)$ /index.php?q=$1 [P]

非常感谢任何帮助!

【问题讨论】:

    标签: php .htaccess mod-rewrite redirect


    【解决方案1】:

    此规则应该适用于站点根目录 .htaccess:

    DirectorySlash Off
    DirectoryIndex index.php
    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} !^/index\.php$ [NC]
    RewriteRule ^(.+)$ /index.php?q=$1 [L,QSA]
    

    无需使用用于代理的P 标志,并且需要在Apache 配置中启用mod_proxy

    【讨论】:

    • 谢谢,但它仍然显示 /test?q=test,而它应该只显示 /test 但仍向 /index.php?q=test 发送请求
    • /test 是一个真实的目录吗?如果不清除浏览器缓存并在禁用缓存的情况下在 Chrome 开发工具中进行测试。
    • 是的,它是一个真正的目录,但刚刚用您更新的代码再次尝试,它工作得非常好!非常感谢!
    【解决方案2】:

    你可以在php中使用include()函数。

    <?php
    include('www.google.com');
    ?>
    

    【讨论】:

    • 不是我想要的
    猜你喜欢
    • 2011-12-30
    • 2014-01-14
    • 2016-05-10
    • 2011-03-23
    • 2023-03-07
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多