-1

我不能再短了:-/

我的 php 项目有关于重定向和 $_GET 的问题。

我希望你能帮助我:)

假设我的 Web 服务器的根目录中有这 3 个文件夹。

/root
   /themes
         /page.php
   /project1
         /index.php
         /content.php
   /project2
         /index.php
         /content.php

/themes包含一个名为/page.php
/page.php包含动态 PHP/HTML 结构或主题的 php 文件,我可以将其用于不同的内容文件。

/project1并且/project2主要包含由/page.php.

/project1并且/project2是 2 个不同域的根文件夹,因此每个域都包含一个index.php.

现在的问题:
为了让每个域的网站都能正常工作,我必须将用户重定向到/themes/page.php,因为那是功能所在的位置,然后包含正确的内容文件。
为了让/page.php知道什么内容文件/project1或者/project2它必须加载,我使用重定向index.php来填充$_GET,如下所示:

header("Location: root-domain/themes/page.php?path=project1&file=content1");

这样 page.php 就可以通过 GET 获取所请求文件的路径和文件名。

但是:
这样用户就可以知道每个文件夹和每个文件名,甚至是一些 php 文件。不知道这样好不好?
并且 URL 从请求的 URL 更改为我的网络服务器根的 URL。

有人知道更好的解决方案吗?

谢谢!<3

4

1 回答 1

2

实际上,我认为有一个解决方案,你只需要使用 mod_rewrite,它是 Apache 的一个模块。这样,您可以将所有 URL 请求重定向到您的这一特定页面。不幸的是,mod_rewrite 背后的“魔法”有点复杂,所以我推荐你这个文档以供进一步使用。

但是现在,只需检查您是否在服务器配置中打开了 mod_rewrite,然后只需在目录project1(或任何其他)中创建一个名为.htaccess的文件,然后将这段代码插入其中:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([^/.]+)/?([^/.]+)?/?$ /themes/page.php?path=$1&file=$2 [QSA]
</IfModule>

点击保存,应该就是这样。现在每个页面请求都通过/themes/page.php

顺便说一句,您绝对不应该在 url 中公开脚本名称。

于 2012-11-03T00:06:20.830 回答