MOD_REWRITE を使用して、単一のファイルを介してすべての URL をチャネルしています。目的は、次のようなきれいな URL を許可することです。
http://mysite.com/shop/electrical/hoover
また
http://mysite.com/shop/checkout
などなど
次の .htaccess ファイルを使用してこれを実現します。
# Turn on the RewriteEngine
RewriteEngine On
#
# Rules
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . urlbug.htm
これは、すべての作業を行う HTML ファイルを簡略化したものです。
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<title>My web page</title>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.20.custom.css" media="all" rel="stylesheet"/>
</head>
<body>
<div id="accordion"><h3><a href="#">Home</a></h3><div>
<ul class="submenu"><li><a href="#" title="Clear Counters">Clear Counters</a></li></ul>
</div>
<h3><a href="#">Maintan Tables</a></h3>
<div>
<ul class="submenu">
<li><a href="#" title="Stock">Stock</a></li>
<li><a href="#" title="Categories">Categories</a></li>
<li><a href="#" title="Designers">Designers</a></li>
</ul>
</div>
<h3><a href="#">User Database</a></h3><div><ul class="submenu"></ul></div>
</div>
<script src="js/libs/jquery-1.7.1.min.js"></script>
<script src="js/libs/jquery-ui-1.8.20.custom.min.js"></script>
<script src="js/plugins.js"></script>
</body></html>
これは、次のような URL にアクセスすると機能します。
http://www.facebookanswers.co.uk/code/foobar/works
ただし、次のような URL を試すと:
http://www.facebookanswers.co.uk/code/foobar/no/longer/works
その後、URL はロードされますが、CSS または JS ファイルはロードされません。
これは、相対 URL を使用しているためです。
代わりに絶対 URL を使用すると、すべて正常に動作します。これを示すために、別のフォルダーをセットアップしました。
http://www.facebookanswers.co.uk/code/foobar2/works
と
http://www.facebookanswers.co.uk/code/foobar2/works/as/well
これは、絶対 URL を含むコードです。
<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<title>My web page</title>
<link type="text/css" href="http://www.facebookanswers.co.uk/code/foobar2/css/ui-lightness/jquery-ui-1.8.20.custom.css" media="all" rel="stylesheet"/>
</head>
<body>
<div id="accordion"><h3><a href="#">Home</a></h3><div>
<ul class="submenu"><li><a href="#" title="Clear Counters">Clear Counters</a></li></ul>
</div>
<h3><a href="#">Maintan Tables</a></h3>
<div>
<ul class="submenu">
<li><a href="#" title="Stock">Stock</a></li>
<li><a href="#" title="Categories">Categories</a></li>
<li><a href="#" title="Designers">Designers</a></li>
</ul>
</div>
<h3><a href="#">User Database</a></h3><div><ul class="submenu"></ul></div>
</div>
<script src="http://www.facebookanswers.co.uk/code/foobar2/js/libs/jquery-1.7.1.min.js"></script>
<script src="http://www.facebookanswers.co.uk/code/foobar2/js/libs/jquery-ui-1.8.20.custom.min.js"></script>
<script src="http://www.facebookanswers.co.uk/code/foobar2/js/plugins.js"></script>
</body>
</html>
どこかで、道が混乱している。これを回避する最善の方法は何ですか? 私が開発しているコードは多くのサイトで使用されるため、可能であれば相対 URL を維持したいと考えています。絶対 URL を使用しなければならない場合でも、世界の終わりではありません。また、絶対 URL にはパフォーマンス上の利点があることも知っていますが、ブラウザーが URL を問題なく読み込むのに、別の場所に保存されていると考えるのは奇妙に思えます。