Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用管理路由时更改default index.php_Php_.htaccess_Mod Rewrite_Autoload - Fatal编程技术网

使用管理路由时更改default index.php

使用管理路由时更改default index.php,php,.htaccess,mod-rewrite,autoload,Php,.htaccess,Mod Rewrite,Autoload,我目前正在进行一个项目,在试图为我遇到的一个小问题找到解决方案后,这个项目让我有点头疼 目前,我的应用程序在收到每个页面请求时都会加载index.php文件。在我的索引中,应用程序启动一些基本的东西,设置一些变量等等。 嗯,我目前正在寻找的是,我想让我的服务器加载一个不同的文件(例如admin.php)作为默认文件。但是,这只需要在url子目录设置为 因此服务器需要完全相同地处理每一件小事,但是当路由设置为/admin/时,它需要自动加载admin.php而不是默认的index.php 当前我的

我目前正在进行一个项目,在试图为我遇到的一个小问题找到解决方案后,这个项目让我有点头疼

目前,我的应用程序在收到每个页面请求时都会加载index.php文件。在我的索引中,应用程序启动一些基本的东西,设置一些变量等等。 嗯,我目前正在寻找的是,我想让我的服务器加载一个不同的文件(例如admin.php)作为默认文件。但是,这只需要在url子目录设置为

因此服务器需要完全相同地处理每一件小事,但是当路由设置为/admin/时,它需要自动加载admin.php而不是默认的index.php

当前我的.htaccess文件如下所示

# mod-rewrite engine
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
编辑:要将事情弄清楚并将其形象化,请执行以下操作:

  • ->index.php
  • ->admin.php

  • ->admin.php->index.php


在这两个文件中,我加载了一个新的Zend_应用程序(ZF1)

这应该可以做到:

RewriteEngine On

# handle requests to /admin/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} ^/admin/$
RewriteRule ^.*$ admin.php [NC,L]

# handle all other requests
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

为了使事情不复杂化,您可以使用一个通用的boostrap脚本,该脚本将有条件地包含这些文件。例如:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ bootstrap.php [NC,L]
然后,在bootstrap.php中

<?php

if(USER_IS_ADMIN){
  require('admin.php');
}else{
  require('index.php');
}

您是否尝试过以下重写规则:

RewriteRule ^admin/?$ admin.php [L]
您的.htaccess看起来像:

# mod-rewrite engine
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^admin/?$ admin.php [L]
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
更新1

如果您尝试按以下顺序重写规则:

RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*(admin).*$ admin.php [NC,L]
RewriteRule ^.*$ index.php [NC,L]

您可以复制这个.htaccess文件并将其放在/admin文件夹中,新规则将index.php更改为admin.phpSorry,因为我还不够清楚。index.php和admin.php文件都位于根目录中。应用程序需要在两个if/admin/或not之间切换。希望这能让它更容易理解。我已经尝试过你的解决方案,但出于某种原因,它跳过了你的添加,只是自动加载index.php。我已经通过使用helloworld echo来改变index.php和admin.php来测试它。它在每个页面/some/things上向我显示helloworld,并且只加载index.php,不需要任何额外的路由。简单而直接的解决方案,但希望在我的.htaccess中处理它。我不完全确定你在SOF线程中指的是哪一部分。你能说得更具体一点吗?我的错,在这种情况下,这个答案似乎帮不了什么忙。我刚刚通读了一遍:)我想用线做点什么,但能弄明白你在说什么,哈哈。没问题,也许我的解释能力也不是世界上最好的:p@Wimbjorno我在这上面搜索了一下。我必须说,这是一种有趣的方法。使用cookie怎么样?您可以添加一个重写条件,例如:RewriteCond%{HTTP\u COOKIE}^.*user\u id=(\d+).$[NC]我已经澄清了我的问题。谢谢你的帮助,但我不确定你是否理解我的问题。请你在编辑后阅读所有内容。希望它更有意义:DSuch是对我当前代码的一个简单添加,但解决了问题!第一个条目不起作用,但随着更新,它就像一个符咒:D