无法访问子文件夹| Php框架

时间:2017-05-13 12:07:42

标签: php .htaccess mod-rewrite

我正在编辑一个使用PHP上的某个框架制作的网站没有显示哪个。 CSS,JS等所有公共文件都在Public目录中。我想在域名中上传一个单独的网站,例如www.domain.com/newsite我创建了新网站的文件夹,但是我无法访问它,它找不到404页面。

根的Htacess如下

RewriteEngine on



RewriteRule ^(?!sitemap\.xml$).(.*)\.xml$ [R=404,L]
RewriteRule ^(?!robots\.txt$).(.*)\.txt$ [R=404,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule    ^$    public/    [L]
RewriteRule    (.*) public/$1    [L]

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>

我在公共目录newsite中创建了anther文件夹,现在仍然可以打开它。

公共目录中的Htacess是

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l



RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

有关如何直接访问文件夹的任何建议

3 个答案:

答案 0 :(得分:1)

当您的新文件夹涉及请求时,您只需要告诉root htaccess不要重写到RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] 目录。目前,您有这部分代码

/

表示:将根页面public重写为public文件夹(第一条规则),并将所有内容重写为RewriteCond %{REQUEST_URI} !^/newsite RewriteRule ^(.*)$ public/$1 [L] 文件夹(第二条规则)。请注意,您的第一条规则是无用的。

无论如何,您需要添加条件才能实现目标

newsite

表示:将 public文件夹以外的所有内容重写为RewriteEngine on RewriteBase / RewriteRule ^(?!sitemap\.xml$).(.*)\.xml$ [R=404,L] RewriteRule ^(?!robots\.txt$).(.*)\.txt$ [R=404,L] RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{REQUEST_URI} !^/newsite RewriteRule ^(.*)$ public/$1 [L] <ifModule mod_headers.c> Header set Access-Control-Allow-Origin: * </ifModule> 文件夹。

最后,你的根htaccess看起来应该是这样的

RewriteBase

注意boolean a=((Integer)response.getStatus()).toString().startsWith("5"); a=(response.getStatus() >=500 && response.getStatus()<= 511); 的存在,这总是一个好习惯,特别是在处理由某些规则创建的虚拟目录时。另请注意,您的两个xml规则可以更聪明/更清晰的方式重写

答案 1 :(得分:0)

尝试添加

RewriteBase /newsite/ 

在&#34; RewriteEngine On&#34;

下写下这一行

答案 2 :(得分:0)

尝试使用以下规则,

RewriteEngine on

RewriteRule ^(?!sitemap\.xml$).(.*)\.xml$ [R=404,L]
RewriteRule ^(?!robots\.txt$).(.*)\.txt$ [R=404,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

#Adding exception for newsite if not new site do rewrite to public/
RewriteCond %{REQUEST_URI} ^!newsite

RewriteRule ^$ public/    [L]
RewriteRule (.*) public/$1    [L]

您找不到错误,因为您目前正在内部将所有内容重写为公共目录,如果您没有,请尝试新规则。