-1

フォルダに index.phpandnews.php.htaccessファイルがあり、基本的にからへlocalhost/DIRECTORY/AID/ のデータの送受信を試みていますindex.phpnews.php

index.phpこれは、データベースクエリからリンクを作成し、記事のタイトルをエコーアウトする、内の関数です。

function news_preview() {
    $query = "SELECT * FROM updates ORDER BY update_id DESC LIMIT 5  ";
    $result = mysql_query($query) or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
        $url = "/news/$row[update_id]/" . preg_replace('/[^a-zA-Z0-9-_]/', '_',
            $row['update_title']);
        echo "<a href=\"$url\">  " . substr($row['update_title'], 0, 26) . "...</a><br/>";
    }
}

echo news_preview();

さて、これがどのように.htaccess見えるかです

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ DIRECTORY/AID/news.php?id=$1 [QSA,L]

さて、問題に。基本的に、に表示されているリンク(によって生成されたnews_preview())をクリックするindex.phpと、news.phpページに表示されるのは何もありません。しかし、おそらく私が使用しようとしているためです $_GET['title']が、それがデータの取得方法であるかどうかはわかりません。しかし、リンクhttp://localhost/news/46/This_is_news_title は完璧なものに私を連れて行きます、しかし私はObject Not Foundエラーを得ています

以下は、私が得ているエラーの画像です。

ここに画像の説明を入力してください

4

3 に答える 3

4

このコードをhtdocs/.htaccess:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteBase /

RewriteRule ^news/([0-9]+)/.*$ /DIRECTORY/AID/news.php?id=$1 [QSA,L,NC]
于 2012-12-10T20:05:16.563 に答える
1

URL の最後の部分を として読み取れることを期待しているようです$_GET['title']が、htaccess ルールはそれをクエリ文字列に追加していません。

変更してみる

RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ DIRECTORY/AID/news.php?id=$1 [QSA,L]

RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ DIRECTORY/AID/news.php?id=$1&title=$2 [QSA,L]
于 2012-12-10T20:06:19.953 に答える
1

index.php&とともに AID/ フォルダにnews.phpある問題は、URL からデータを取得する方法がわからないことです。news.php

htaccess ファイルはドキュメント ルートにある必要があります。リクエスト URI が次の形式の場合:

/news/1234/something-something

オーバーライド (つまり、htaccess ファイル内のもの) を適用するかどうかを解決するために apache が使用する順序は、最初にこれがディレクトリ/news/1234/something-somethingであるかどうかを確認し、そうであれば、その中に htaccess ファイルがあるかどうかを確認します。それはディレクトリではないので、apache は先に進みます。がディレクトリの場合/news/1234、その中に htaccess ファイルがあるかどうかを確認します。そうではないので、何も起こりません。次に、apache/newsがディレクトリかどうかをチェックし、そうであれば htaccess をチェックします。また、ディレクトリではないため、何も起こりません。最後に、apache はドキュメント ルート/をチェックして、htaccess があるかどうかを確認します。ドキュメント ルートディレクトリであるため、そこにルールを配置する必要があります。

/DIRECTORY/AID/実際にドキュメント ルートが存在する場合を除き、ディレクトリがここに混在することはありません。がドキュメント ルートの場合DIRECTORY/AID/、たとえば URI/がそのディレクトリに直接マップされている場合は、ルールを次のように変更する必要があります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ news.php?id=$1 [QSA,L]
于 2012-12-10T19:55:16.297 に答える