Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Apache 重写到支持MVC的子目录_Apache_.htaccess_Mod Rewrite_Model View Controller - Fatal编程技术网

Apache 重写到支持MVC的子目录

Apache 重写到支持MVC的子目录,apache,.htaccess,mod-rewrite,model-view-controller,Apache,.htaccess,Mod Rewrite,Model View Controller,基本上,我在一个位于另一个站点的目录中的站点上工作,这意味着我无法访问主机文件。我试图模仿公共html和私人文件夹的常见网站结构 所以我需要mydir目录重定向到公共目录。 我还需要它来支持MVC架构 我目前有以下情况: 在mydir目录中: RewriteEngine on RewriteBase /mydir/public/ RewriteRule ^((?!public/).*)$ /mydir/public/$1 [L,NC] RewriteEngine on RewriteBase

基本上,我在一个位于另一个站点的目录中的站点上工作,这意味着我无法访问主机文件。我试图模仿公共html和私人文件夹的常见网站结构

所以我需要mydir目录重定向到公共目录。 我还需要它来支持MVC架构

我目前有以下情况:

在mydir目录中:

RewriteEngine on
RewriteBase /mydir/public/ 
RewriteRule ^((?!public/).*)$ /mydir/public/$1 [L,NC]
RewriteEngine on
RewriteBase /public/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^?]*)$ /mydir/public/index.php?path=$1 [NC,L,QSA]
RewriteEngine on

RewriteBase /webapps/

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteRule ^((?!public/).*)$ public/index.php?path=$1 [L,NC]
在公共目录内:

RewriteEngine on
RewriteBase /mydir/public/ 
RewriteRule ^((?!public/).*)$ /mydir/public/$1 [L,NC]
RewriteEngine on
RewriteBase /public/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^?]*)$ /mydir/public/index.php?path=$1 [NC,L,QSA]
RewriteEngine on

RewriteBase /webapps/

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteRule ^((?!public/).*)$ public/index.php?path=$1 [L,NC]
在大多数情况下,这很好,但我有重复的目录。 e、 g./mydir/与/mydir/public相同

如果我解释得不好,下面是我尝试做的几个例子:

/mydir/index.php->/mydir/ /mydir/blog/->/mydir/public/blog/
以下解决方案似乎解决了我的问题:

这是我唯一的.htaccess文件,它位于mydir目录中:

RewriteEngine on
RewriteBase /mydir/public/ 
RewriteRule ^((?!public/).*)$ /mydir/public/$1 [L,NC]
RewriteEngine on
RewriteBase /public/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^?]*)$ /mydir/public/index.php?path=$1 [NC,L,QSA]
RewriteEngine on

RewriteBase /webapps/

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteRule ^((?!public/).*)$ public/index.php?path=$1 [L,NC]

你说的是主目录和公共目录,但是mydir目录呢?不管怎样,你只需要在主目录的htaccess中使用一条规则就可以做你想做的事情。其他人变成无用的人,这不是你的意思。另外,我该怎么做呢?考虑到您的评论,解决方案是在mydir中只有一个htaccess,使用以下规则:RewriteCond%{REQUEST_FILENAME}-f RewriteRule^.*$/mydir/public/index.php?path=$1[NC,L,QSA]看起来你并没有读过我的全部问题;因为这不能解决我的问题。这比我已经拥有的要少:3