2017-05-13 4 views
3

PHPでいくつかのフレームワークを使用して作成されたサイトを編集していますが、そのサイトには表示されません。 CSS、JSなどのすべてのパブリックファイルはパブリックディレクトリ内にあります。私はwww.domain.com/newsiteのようなドメイン内に別のサイトをアップロードしたいと思います。新しいサイトを作成しましたが、404ページにはアクセスできません。サブフォルダにアクセスできない| PHPフレームワーク

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内でそれを開くことができ葯のフォルダを作成したとして

ルートのHtacessです。

パブリックディレクトリ内Htacessが

RewriteEngine On 

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



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

私が直接

+0

root htaccessの先頭にある 'RewriteRule^newsite/- [L]'で動作しますか? – Deadooshka

答えて

1

新しいフォルダが要求に含まれている場合は、ルートのhtaccessにpublicディレクトリに書き換えないように伝える必要があります。 publicフォルダ(最初のルール)にルートページ/を書き換えると同様publicにフォルダ(第2法則)すべてを書き直す:現在、あなたは意味のコード

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

のこの部分を持っています。最初のルールが役に立たないように注意してください。newsiteフォルダpublicにフォルダ以外のすべてを書き換える:

はとにかく、あなたはあなたの目標を意味

RewriteCond %{REQUEST_URI} !^/newsite 
RewriteRule ^(.*)$ public/$1 [L] 

に到達するために条件を追加する必要があります。

終わりには、お使いのルートhtaccessのは、この

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> 

ようになっているはずですが、いくつかのルールによって作成された仮想ディレクトリを扱う場合は特に、常に良い習慣ですRewriteBaseの存在に注意してください。あなたの2つのxmlルールはもっと賢い/クリーンな方法で書き直すことができることにも注意してください。

0

0
"オンRewriteEngine" の下で、この行を書く

RewriteBase /newsite/ 

を追加しようとするフォルダにアクセスすることができますどのように任意の提案です

以下のルールを使用してください。

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] 

現在、パブリックディレクトリにすべての内容を内部的に書き換えているため、エラーが見つからない場合は、新しいルールを試してください。

関連する問題