0

URL をクリーンアップするための mod_rewrite ルールがあります。

RewriteRule ^tshirts*$ /thsirt.php

myurl.com/tshirtorにアクセスすると、myurl.com/tshirtsにリダイレクトされmyurl.com/tshirt.phpます。

外部スタイルシートへのリンクを追加するまではmyurl.com/tshirt適切に表示されていましたが、実際には CSS ファイルにリダイレクトされるため、CSS ファイルの生のソース ( ) が残ります。tshirt.phptshirt.phptshirt.css

さらに困惑させるのは、 に移動するとmyurl.com/tshirts404 がスローされることです。

のソースtshirt.php:

<html>
<head>
    <title>Page title</title>
    <link rel="stylesheet" type="text/css" href="/tshirt.css" />
</head>
<body>
    <h1>Hello, world.</h1>
</body>
</html>

のソースtshirt.css:

body{
    background-color: #4F5557;
}

これを引き起こしている可能性のあるもの、またはそれを修正する方法はありますか?

4

2 に答える 2

2

最善の解決策は、すべてのベースをカバーすることです。基本的に、必要なものだけを書き直し、そうすべきでないものは何も書き直さないことを確認してください。

まず、デフォルトとして、特定のファイルまたはディレクトリを参照するものを書き換えないように注意する必要があります。

# Do Not apply if a specific file or folder exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

次の Next を追加すると、ルールを無視する特定のディレクトリを指定することもできます。これは、呼び出されたスクリプトや外部にリンクされるリソースなど、他の目的のために存在する可能性があります。

# Do Not apply if refering to a resource in one of these folders
RewriteCond %{REQUEST_URI} "/admin/" [OR]
RewriteCond %{REQUEST_URI} "/scripts/" [OR]
RewriteCond %{REQUEST_URI} "/external/"
RewriteRule (.*) $1 [L]

最後に、ルールを設定できます

RewriteRule ^tshirts*$ /tshirt.php
于 2013-02-20T23:13:10.587 に答える
0

通常、既存のファイルまたはディレクトリの URL が書き換えられることは望ましくないため、ルールの前に 2 つの条件を追加します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tshirts*$ /thsirt.php

さまざまな種類のリソースの明確なフォルダー構造も、プロジェクトを管理しやすくするのに役立ちます。

于 2013-02-20T22:59:01.523 に答える