0

私はからURLを取得しようとしています:

192.168.0.1/movie-page.php?id=123

に:

192.168.0.1/映画/映画名

または(今のところ):

192.168.0.1/映画/123

このURLを使用して単純化しました(何かを機能させるため):

192.168.0.1/pet_care_info_07_07_2008.php から 192.168.0.1/pet-care/

私の .htaccess ファイル:

RewriteEngine On
RewriteRule ^pet-care/?$ pet_care_info_07_07_2008.php [NC,L]

私は何を間違っていますか?私は多くの組み合わせを試しましたが、運がなく、私の忍耐力が尽きています...

デフォルトで mod_rewrite が有効になっているはずのローカル NAS でこれを実行しています。.htaccess ファイルにランダムな文字列を入力してページを開いて .htaccess をテストしたところ、404 エラーが発生しました。ファイルの形式が正しくない場合、ページが機能しなくなるため、これは .htaccess が使用されていることを意味すると思います。

4

2 に答える 2

2

書き直したい場合: 192.168.0.1/movie-page.php?id=123あまりにも

192.168.0.1/movie/movie-nameまた192.168.0.1/movie/123

次に、次のようなことを行いますが、必要な新しいルート(ファンシーURL)の書き換えを手動で追加する必要があります。最終的には、スクリプトでルートを動的に作成するか、単一のエントリポイントでサニタイズする必要があります。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^movie/([a-zA-Z0-9-]+)$ movie-page.php?id=$1 [L]

したがって、より良い方法は、すべてをリライトにルーティングすることです。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

次に、で分割してルートを処理$_GET['route']しますexplode()

<?php 
//192.168.0.1/movie/movie-name
$route = (isset($_GET['route'])?explode('/',$_GET['route']):null);

if(!empty($route)){
    //example
    $route[0]; //movie
    $route[1]; //movie-name
}
?>
于 2012-09-20T19:51:13.600 に答える
0

次のようなものが必要です。

RewriteRule ^movie/([0-9]*)$ /movie-page.php?id=$1 [L,R=301]

これにより、数値 ID を持つ映画 ID バージョンが得られます。

于 2012-09-20T19:52:43.830 に答える