如果主控制器驻留在公用文件夹中,如何配置htaccess文件

时间:2016-09-12 21:45:30

标签: regex apache .htaccess mod-rewrite

我看到了一个与我相似的问题,但接受的答案由于某种原因并不起作用。

我的问题是我无法访问位于公用文件夹中的index.php。我尝试了无数组合,并认为它位于正确的文件夹中 - 公共文件夹。

没有效果的答案是使ReWriteBase%{DOCUMENT_ROOT} / public。我这样做了,但获得了索引。但是,至少公共文件夹是不可见的,所以感觉就好像我已经接近了。

感谢任何帮助。

PS。我可以在本地机器上看到RewriteBase / projectname / public的应用程序,但URL必须包含public或者我得到一个Index of page。我希望摆脱公共部分并解决根(域名)。

这是我的.htaccess文件:

Options -MultiViews
RewriteEngine On
RewriteBase %{DOCUMENT_ROOT}/public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

更新了htaccess文件:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /public/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

1 个答案:

答案 0 :(得分:0)

RewriteBase应该是来自DocumentRoot而不是完整路径的相对路径。

以下是您需要使用的2.htaccess:

<强>根/ htaccess的:

RewriteEngine On

RewriteRule .* public/$0 [L]

公开/ htaccess的:

DirectoryIndex index.php
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /public/

RewriteRule ^index\.php$ - [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php?url=$0 [QSA,L]