2009-05-04 13 views
0

私は長年にわたってdrupal 4.7のインストールを使用していましたが、最近の問題が解決しました。すなわち、書き換えられたURLは次のようにこれらの文字を表示しています。?q =すべてのDrupalで生成されたURL:http://sitename.com/?q=path/alias。前にはhttp://sitename.com/path/aliasとなります。Modリライト/クリーンURL問題

私は最近、いくつかのサイドブロック内でコンテキスト依存のリンクスタイリングを追加するために、いくつかの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> 

これが問題だろうか?もしそうなら、修正に関するアイデアはありますか?

+0

あなたがそのコードをコメントアウトすると、それはやめますか?それがそれを引き起こしていることを確認する最良の方法でしょう。 –

+0

また、あなたがあなたの.htaccessを動かさなかったことを確認してください。あなたのコードは、私にそれを加えるべきではありませんか? – easel

+0

アイデアありがとう、他に何も出てこない場合は試してみる... –

答えて

0

あなたのスニペットが原因ではないと思います。データベースからのみ読み込みます。 URLに変更は加えません。 mod_rewriteは引き続き有効ですか?これは、最近のサーバー設定の変更によって発生する可能性があります。 phpinfo()の出力を確認してください。

ちなみにurl()のオプション$absoluteは、$optionsアレイではなく、Drupal 4.7ではpassed as a separate argumentです。あなたの電話は:

url($path, $absolute=TRUE); 
+0

アイマンさんありがとう!役に立つ情報できるだけ早くチェックします。残念ながら、私のサーバーへのアクセスはかなり制限されているので、私の回避策は革新的でなければなりません。 –

1

私はあなたのきれいなURLがちょうど壊れていると思っています。クリーンURLを有効にしていない場合、すべてのURLはhttp://example.com/?q=/foo/bar/bazのようになります。書き換え規則によって、http://example.com/foo/bar/bazの要求がhttp://example.com/?q=/foo/bar/bazに内部的に処理されます。

あなたは書き戻しルールがまだ機能していることを確認してください(http://example.com/foo/bar/bazzに行くこともできますか?)、クリーンURLが有効になっていることを確認する必要があります。

+0

はい、http://example.com/foo/bar/bazzはまだ動作しているので、書き換えルールはまだ動作しているようです。追加の文字を追加するのはdrupalで生成されたURLだけですか?q = –

1

管理者/設定にアクセスして、[URLを消去する]がオンになっていることを確認します。

0

は、以下のことを試してみてください。

  1. は再び

  2. があなたのApacheが利用できるのmod_rewriteを持っていることを確認し、サイトのルートに変更されていないの.htaccessファイルをアップロードします。あなたがシェルアクセスを持っており、それがUbuntuの/ Debianのマシンの場合はオプションは、管理/設定で有効になっている場合は、ちょうど

  3. チェックを書き換えa2enmod行う

  4. ルート上の簡単な.PHPファイルを作成します。フォルダとタイプ:

    phpinfo();

次に、モジュールが機能しているかどうかを確認します。