jsおよびcssファイルへのhtacessリダイレクト

Aug 03 2020

これは私の典型的なPHPMVC構造です:

-Resources
        --/my.css
        --/my.js
-Project
        --/.htaccess
        --/index.php
        --/Other Files & Folders

これは私のhtaccess設定です:


Options -Indexes

#AddHandler application/x-httpd-php53 .php .php5 .php4 .php3
RewriteEngine on

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC] RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

今すぐ書いてください私のすべてのリクエストはindex.phpを通過しています。私のプロジェクトファイルでは、次のようにResourcesフォルダーにあるcss&jsファイルにアクセスしています。

<link rel="stylesheet" type="text/css" href="/../Resources/my.css"/>
<script src="/../Resources/my.js"></script>

これにより、次のエラーが発生します

HTTP/1.1 404 Not Found 258ms

htaccess構成に次の書き換えルールを追加しようとしましたが、機能しません。

RewriteCond %{REQUEST_URI} ^/Resources/my.css
RewriteRule ^api(.*)$ ../Resources/my.css [NC,QSA,L]

同じCSSとJSリソースが複数のプロジェクト間で共有されており、単一の場所から簡単に管理できるため、フォルダー構造を変更したくありません。どういうわけかそれらを参照したいだけです。

またinclude('../Resources/my.css')、PHPの場合のように、プロジェクトファイルにコードを含めたくありません。これは必要ありません。

これに対する解決策を提供してください。よろしくお願いします

回答

Top-Master Aug 03 2020 at 23:36

私たちにとって、アセットを常にルートディレクトリのサブディレクトリに配置することは一種の書かれていない役割です(index.phpファイルを含むディレクトリはルートです)。

とにかく、ドキュメントルートの外部に書き換えることはできません。これはセキュリティの問題であり、考えてexample.com/../my-dirみれば意味がありますか?


回避策(のように別のポストは)あなたにシンボルリンクを作成することですResourcesディレクトリ、それに名前を付けることができますmySymbolLink、あなたが行うことができます:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^Resources/.*
    RewriteRule ^Resources/(.*)$ /mySymbolLink/$1 [QSA,L]
</IfModule>

ただし、パスを変更する必要があります。たとえば、機能する/../Resources/my.js必要があります/Resources/my.js

HimanshuAgrawal Aug 08 2020 at 19:00

まあ、他の人もコメントや回答で指摘しているように、これは不可能です。クライアント側のスクリプトからプロジェクトルートの上または外を参照することはできません。サーバー側のコーディングからは可能ですが、クライアント側のコードは不可能です/