我在mac上使用apache服务器,一切正常。
现在我有一个网页,其index.php
非常复杂:
在index.php
中,它希望网址为:localhost/~username/hostname/page_a
。
page_a
的内容实际上是存储在.php
文件夹中的content
文件。
所以在index.php
中,它只解析page_a
,然后执行include:''来呈现请求页面。
但在.htaccess
中,重定向规则未正确配置。
例如,如果我点击链接:localhost/~username/hostname/page_a
,
有没有办法将此网址重定向到index.php
,
同时,网址仍为localhost/~username/hostname/page_a
,
以便index.php
可以解析并正确呈现它?
感谢。
答案 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']
参数中。