Apache 重写到支持MVC的子目录
基本上,我在一个位于另一个站点的目录中的站点上工作,这意味着我无法访问主机文件。我试图模仿公共html和私人文件夹的常见网站结构 所以我需要mydir目录重定向到公共目录。 我还需要它来支持MVC架构 我目前有以下情况: 在mydir目录中: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
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