質問
私は長年にわたってdrupal 4.7インストールを使用してきましたが、最近問題が発生しました。つまり、書き換えられたURLは次の文字を表示するようになりました。 http://sitename.com/?q=path/alias 、以前は http ://sitename.com/path/alias 。
これがなぜ起こるのかについての私の最善の推測は、最近いくつかのPHPコードを使用して、いくつかのサイドブロック内にコンテキスト固有のリンクスタイリングを追加し始めたことです。コードは次のとおりです。
<?php $alias= $_GET['q']; ?>
<a <?php $pos=strpos($alias,"1234"); // node number
if(!$pos == false) {
echo 'style="color:black"';
} ?> href="internal/link/alias">Internal Link</a>
または最近:
<?php $path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$alias = url($path, array('absolute' => TRUE)); ?>
<a <?php $pos=strpos($alias,"internal/link/alias");
if(!$pos == false) {
echo 'style="color:black"';
} ?> href="internal/link/alias">Internal Link</a>
これは問題でしょうか?その場合、修正に関するアイデアはありますか?
解決
スニペットが原因ではないと思います。データベースからの読み取りのみ。 URLは変更されません。 mod_rewriteはまだ有効になっていますか?これは、サーバー構成の最近の変更が原因である可能性があります。 phpinfo()
の出力を確認します。
ところで、$absolute
のオプションurl()
はとして渡されます$options
配列ではなく、Drupal 4.7の個別の引数。コールは次のようになります。
url($path, $absolute=TRUE);
他のヒント
きれいなURLが壊れていると思います。クリーンURLを有効にしていない場合、すべてのURLはhttp://example.com/?q=/foo/bar/baz
のようになります。書き換えルールは、http://example.com/foo/bar/baz
into http://example.com/foo/bar/bazz
からのリクエストを内部で処理するように変換します。
前に戻って、書き換えルールがまだ機能していることを確認する必要があり(<=>にアクセスできますか?)、DrupalでクリーンなURLがオンになっていることを確認してください。
admin / settingsに移動し、URLのクリーンがオンになっていることを確認します。
次を試してください:
-
変更されていない.htaccessファイルをサイトのルートに再度アップロードします
-
Apacheでmod_rewriteが利用可能であることを確認してください。シェルアクセスがあり、Ubuntu / Debianマシンの場合は、
a2enmodの書き換え
-
admin / settingsでオプションが有効になっているかどうかを確認します
-
ルートフォルダーに単純な.phpファイルを作成し、次のように入力します。
phpinfo();
次に、モジュールが機能しているかどうかを確認します。