【问题标题】:PHP index.php File get other pages content from subdirectory locationPHP index.php 文件从子目录位置获取其他页面内容
【发布时间】:2018-01-18 11:11:54
【问题描述】:

如何在服务器根目录中仅获取index.php,并将所有链接页面(如/about.php /contact.php 等)放在服务器中的/pages/dist 等子目录中?如果有人访问example.com/about.php,它会得到来自/pages/dist/[filename.php] 的内容?

【问题讨论】:

  • 您是否实际上希望从 URL 中删除 .php?
  • 不,没关系,因为我使用带有Options +MultiViews 的 .htacces 让它在没有扩展名的情况下也能工作。只是希望将其他文件放在子目录中。我不知道为什么它被否决了这个问题这么糟糕?
  • 如果可能的话,这是一个问题吗?或者您在尝试实现此功能时遇到问题?
  • 这更像是一个问题,因为我不知道仅使用一个index.php 是否真的可行。我可以使用包含来执行此操作,但随后我需要将所有页面添加到根目录:about.php 并对位于/pages/dist/about.php/ 的文件执行包含到服务器,这对我的项目不利,因为我想管理所有从/pages/dist/[filename.php] 显示的页面我在一个非常复杂的项目中使用任务运行器,其中有很多页面不确定这里是否有人知道是否可以这样做,这就是我问这个的原因。

标签: php html .htaccess server-side


【解决方案1】:

我发现有两种方法可以做到这一点。

  1. 将 htaccess 与正则表达式结合使用:

使用rewrite engine,您可以将基本网址链接到这样的文件夹:

RewriteEngine On
RewriteRule ^(?!index\.php)([\w-_]+)$ pages/dist/$1.php [QSA,L]
RewriteRule ^(?!index\.php)([\w-_]+\.php)$ pages/dist/$1 [QSA,L]

第二行是不带 .php 标记的文件,第三行是带 .php 标记的文件。 如果用户在 url www.example.com/test.php 中输入,它将显示 www.example.com/page/dist/test.php 上的内容,即使用户去掉了 php 标签,但如果他输入 index.php 它将保持不变。


  1. 使用不带正则表达式的 htaccess:

这只是为了简单,但如果我们不使用正则表达式,它可能看起来像这样:

RewriteEngine ON
RewriteRule "test.php" "page/dist/test.php"
RewriteRule "test2.php" "page/dist/test2.php"
RewriteRule "test3.php" "page/dist/test3.php"
...

如果我错了,请纠正我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多