この文字列の形式でURLを書きたい: http ://www.mysite.com/news/2012/10/04/article-title しかし、htaccessファイルでRewriteRuleを使用すると、サイトスタイルが正しく機能しません。私はこの質問があります:phpでこれを行うための最良の方法は何ですか?以前はasp.netwhitrewrite moduleでこれを実行していましたが、現在は実行できません。何度も検索して多くの記事を読んでいますが、それでもこの問題が発生します....どうもありがとうございました
4 に答える
単一のエントリポイントを使用します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?route=$1 [L]
このようにして、すべてのリクエストは、必要なアドレスを含むGET変数を使用してインデックスページにルーティングされます。これで、PHP内で(インクルードを使用して)ルーティングする方法を決定できます。ここで、制御が簡単になります。
また、スタイルを指すために絶対パスを使用するか、スタイルの絶対パスを含めるためにPHP変数を使用する必要があります。
上記.htaccess
は、ファイルが存在する場合、URLを書き換えないことを確認します。(2〜3行目)。
個人的には、スタイルシートとスクリプトを挿入するときに、絶対URL(または少なくともルートからの相対URL)を使用します。
<link rel="stylesheet" href="/css/styles.css" />
それでもうまくいかない場合は、CSSパスも書き直している可能性があります。必要に応じてファイルを除外します(おそらく、特定の拡張子で終了するかどうかを確認することで最もよく実行されます)
ルールが正しく設定されていても、その後CSSの書式が設定されていない場合は、CSSファイルへの相対パスが正しくないことを意味します。
あなたはおそらく今このようなものを使用しています:
<link rel="stylesheet" href="css/styles.css" />
これに変更します:
<link rel="stylesheet" href="/css/styles.css" />
私が使用するソリューションは、ベースhtmlタグであり、画像とスタイルシートを分類します。
必ず使用してください:RewriteCond %{REQUEST_FILENAME} !-f
少なくとも-おそらくそれをより安全にするので、直接パスも同様に機能します。