apache server:将所有url请求重定向到index.php

时间:2012-10-03 19:32:41

标签: apache .htaccess redirect

我在mac上使用apache服务器,一切正常。

现在我有一个网页,其index.php非常复杂: 在index.php中,它希望网址为:localhost/~username/hostname/page_apage_a的内容实际上是存储在.php文件夹中的content文件。 所以在index.php中,它只解析page_a,然后执行include:''来呈现请求页面。

但在.htaccess中,重定向规则未正确配置。

例如,如果我点击链接:localhost/~username/hostname/page_a, 有没有办法将此网址重定向到index.php, 同时,网址仍为localhost/~username/hostname/page_a, 以便index.php可以解析并正确呈现它?

感谢。

1 个答案:

答案 0 :(得分:3)

这取决于此index.php如何处理请求。如果它只是查找$_SERVER变量(如'REQUEST_URI')来查找所请求的文件,那么您无需传递任何内容。如果它查找查询字符串参数,则您的重写规则需要将其传递给它。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

或者如果您需要传递查询字符串参数:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA]

如果规则中没有R标记或http://,则浏览器上的URL地址栏不会更改。如果有人在浏览器中输入http://localhost/~username/hostname/page_a/~username/hostname/page_a请求将被发送到服务器,则重写规则会在内部将其重写为/index.php,并且php脚本可以查看$_SERVER['REQUEST_URI'] 1}}找到/~username/hostname/page_a请求并正确路由它,如果使用第二条规则,则在$_GET['url']参数中。