主页htaccess重写

时间:2016-05-02 23:45:13

标签: php apache .htaccess mod-rewrite

感谢您抽出宝贵时间阅读本文。

我有一个带有自定义结构的PHP项目,其中主页位于多个文件夹中:

\web\views\site\test.php

我希望能够在用户直接访问我的网站索引时加载此页面,但我需要保留索引的URL。所以,如果你输入

http://example.com/它应显示http://example.com/web/views/site/test.php的内容,但原始网址无法更改(http://example.com/)。

此外,如果用户输入http://example.com/web/views/site/test.php,则应转到http://example.com/,因此在这种情况下,网址必须更改。

我已尝试过目前为止我见过的其他帖子,但几乎每次尝试都会得到500 Internal Server Error。是否有可能仅使用htaccess来实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解你,在这里你不需要创建或更改@ .htaccess文件。

你所要做的就是在主目录中写下@ index.php中的一个代码,根据你的服务器配置你可能会遇到错误,但是逐个尝试它们你会得到它:

 <?php

  $test = file_get_contents("web/views/site/test.php");
  echo ($test); // option 1


 include("web/views/site/test.php");// option 2
 require('web/views/site/test.php'); // option 3
 require_once('web/views/site/test.php'); // option 4

include($_SERVER['DOCUMENT_ROOT'].'/web/views/site/test.php');// option 5
require($_SERVER['DOCUMENT_ROOT'].'/web/views/site/test.php');// option 6
require_once($_SERVER['DOCUMENT_ROOT'].'/web/views/site/test.php');//option 7     
?>

注意:请确保仅在路径中使用选项5,6和7

  

UPDATE   关于你的评论,我认为你需要的是以下代码:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yoursite.com$
RewriteCond %{REQUEST_URI} !^/web/views/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /web/views/site/$1
RewriteCond %{HTTP_HOST} ^(www.)?yoursite.com$
RewriteRule ^(/)?$ /web/views/site/index.php [L]

以上代码将允许您从web / views / site和路径中打开主目录中的所有内容,因此当您请求时 yoursite.come / test.php就像你请求yoursite.come / web / views / site / test.php一样,所以不同的URL具有相同的内容