将所有内容重定向到index.php,而不更改url

将所有内容重定向到index.php,而不更改url,php,.htaccess,mod-rewrite,redirect,Php,.htaccess,Mod Rewrite,Redirect,为了得到这份工作,我快发疯了。我计划对我的整个网站进行一次相当复杂的重新设计。由于我的网站应该根据您尝试访问的子文件夹(例如www.mydomain.com/test123)的不同而工作,因此我认为最简单的解决方案是将每个请求重定向到main index.php,并从那里处理所有情况。我还想重定向图像和css文件等,因为我会处理这些案件“手动”太多 下面是它应该做的: 它应该将每个请求重定向到根文件夹中的index.php 它应该将第一个斜杠之后的所有内容作为查询参数传递。(mydomain.c

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

下面是它应该做的:

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

    RewriteCond %{REQUEST_URI} !^/index.php$
    RewriteRule ^(.*)$ /index.php?q=$1 [P]
    
    非常感谢您的帮助

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


    此规则适用于站点根目录。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=testIs
    /test
    实际目录发送请求?如果不清除浏览器缓存,请在禁用缓存的Chrome dev工具中进行测试。是的,这是一个真实的目录,但只需使用更新的代码重试,即可正常工作!谢谢!不完全是我想要的
    DirectorySlash Off
    DirectoryIndex index.php
    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} !^/index\.php$ [NC]
    RewriteRule ^(.+)$ /index.php?q=$1 [L,QSA]