我正在编辑一个使用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]
有关如何直接访问文件夹的任何建议
答案 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]
您找不到错误,因为您目前正在内部将所有内容重写为公共目录,如果您没有,请尝试新规则。