我不能做得更短: - /
我的php项目有关重定向和$ _GET的问题。
我希望你能帮助我:)。
假设我在我的网络服务器的根目录中有这3个文件夹。
/root
/themes
/page.php
/project1
/index.php
/content.php
/project2
/index.php
/content.php
/themes
包含一个名为/page.php
的php文件
/page.php
包含动态PHP / HTML结构或主题,我可以将其用于不同的内容文件。
/project1
和/project2
主要包含/page.php
包含的HTML内容文件。
/project1
和/project2
是2个不同域的根文件夹,因此每个域都包含index.php
。
现在问题是:
为了让每个域的网站都能正常工作,我必须将用户重定向到/themes/page.php
,因为那是功能所在的,然后包含正确的内容文件。
要让/page.php
知道必须加载的/project1
或/project2
内容文件,我会使用index.php
的重定向来填充$_GET
,如下所示:< / p>
header("Location: root-domain/themes/page.php?path=project1&file=content1");
这样,page.php可以从GET中获取所需文件的路径和文件名。
BUT:
这样,用户就可以了解每个文件夹和每个文件名,甚至是一些php文件。我不知道那是不是很好?
并且URL会从请求的URL更改为我的Web服务器根目录的URL。
有人知道更好的解决方案吗?
谢谢! &LT; 3
答案 0 :(得分:2)
实际上,我认为有一个解决方案,你只需要使用mod_rewrite,它是Apache的一个模块。有了它,您可以将所有URL请求重定向到您的这一个特定页面。不幸的是,mod_rewrite背后的“神奇”有点复杂,所以我建议你this documentation进一步使用。
但是现在,只需检查服务器配置中是否启用了mod_rewrite,然后在目录 project1 (或任何其他)中创建名为 .htaccess 的文件并在其中插入这一小段代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([^/.]+)/?([^/.]+)?/?$ /themes/page.php?path=$1&file=$2 [QSA]
</IfModule>
点击保存,应该是它。现在每个页面请求都通过 /themes/page.php 。
顺便说一下,你绝对不应该在url中公开脚本名称。