2016-10-27 12 views
1

私はLarvel 5.1のプロジェクトを実行しています。 http://www.example.comにホストされているとします。私がこのaddressに行くと、うまく動いていて、URLにはpublic/がありません。今や唯一の問題は、誰かがhttp://www.example.com/public/にexplcitly行くと、彼はCSSとJSがロードされていないホームページのコンテンツを見て、それはSEOにはまったく役に立たないということです。私はインターネットで検索しようとしましたが、誰もがURLからpublic/を削除する方法に答えていますが、私の場合はすでに削除されています。私は彼が明示的にそこに行くならば、ユーザが内容をpublic/の中で見ることを望んでいません。これを達成する方法はありますか? .htaccessもここに掲載します。キャッシュを有効にするために多くのコードがあり、ドメインにwww.を追加しました。この問題を解決するのを手伝ってください。私は完全に立ち往生している。 はここ私はLaravel 5.1のパブリックディレクトリのコンテンツを提供したくありません。

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 
    ## EXPIRES CACHING ## 
    <IfModule mod_expires.c> 
    AddType application/vnd.ms-fontobject .eot 
    AddType application/x-font-ttf .ttf 
    AddType application/x-font-opentype .otf 
    AddType application/x-font-woff .woff 
    AddType image/svg+xml .svg 
    ExpiresActive On 
    ExpiresByType image/jpg "access plus 1 year" 
    ExpiresByType image/jpeg "access plus 1 year" 
    ExpiresByType image/gif "access plus 1 year" 
    ExpiresByType image/png "access plus 1 year" 
    ExpiresByType text/css "access plus 1 month" 
    ExpiresByType application/pdf "access plus 1 month" 
    ExpiresByType text/x-javascript "access plus 1 month" 
    ExpiresByType application/x-shockwave-flash "access plus 1 month" 
    ExpiresByType image/x-icon "access plus 1 year" 
    # Add a far future Expires header for fonts 
    ExpiresByType application/vnd.ms-fontobject "access plus 1 year" 
    ExpiresByType application/x-font-ttf "access plus 1 year" 
    ExpiresByType application/x-font-opentype "access plus 1 year" 
    ExpiresByType application/x-font-woff "access plus 1 year" 
    ExpiresByType image/svg+xml "access plus 1 year" 
    ExpiresDefault "access plus 1 week" 
    </IfModule> 
    ## EXPIRES CACHING ## 

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

答えて

0

これは、すべてのディレクトリとファイルがエントリポイントになるように、私が思うように設計が遅れていることに由来します。ワードプレスは同じことをします。あなたはそのようにそれを修正することができます:ちょうど/public/のディレクトリチェックを無視し、そのまま他の機能を残す必要があります

# Handle Front Controller... 
RewriteCond $0 =public [OR] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^[^/]* index.php [L] 

+0

ありがとうございました。それは魅力のように働いた。私は多くの助けてくれました。私はApache docをもっと学ぶべきだと思います.-) –

+0

Apacheのドキュメントは素晴らしいですが、特定の問題に一般的な概念を適用することは実際には実践的です。 – Walf

-1

ルートに次の内容の.htaccessのページを作成し、私の.htaccessファイルの内容です。

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 
+0

最後のルールは、基本的に無限の接頭辞のループで、「LimitInternalRecursion」によってのみ停止されます。 – Walf

+0

私はその部分を削除しました – Dexture

関連する問題