1

私の目標は、次のことを達成することです。

私の質問: properties.php?id=1234-N-StreetName-etc

に変えられる:

properties/1234-N-Beverly-Blvd.html

properties.php$id(この場合)の値をany-address.htmlmysqlデータベースに対して評価します。値がデータベースにない場合、ファイルproperties.phpはユーザーを404ページにリダイレクトします。 $ idの値は、英字、ダッシュ'-'、または数字の任意の組み合わせにすることができます。

私が持っているコードは機能していません:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.html$ $1.php [nc]
RewriteRule ^properties/([a-zA-Z0-9_-]+)\.html$ properties.php?id=$1

正しいhtaccess書き換えコードを取得するのを手伝ってもらえますか?

PS。.htaccessについては何も知りません。このコードをサンプルWebサイトから変更しました。

4

1 に答える 1

1

そのルールをLastとしてマークし、クエリ文字列の追加のQSAとしてマークするには、Lフラグが必要です。

DOCUMENT_ROOTディレクトリの下の.htaccessで次のコードを使用します。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^properties/([^.]+)\.html$ /properties.php?id=$1 [L,NC,QSA]

このルールをサブディレクトリsunに適用するには、次のコードを使用します。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /sub

RewriteRule ^properties/([^.]+)\.html$ /sub/properties.php?id=$1 [L,NC,QSA]

# translate html -> php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^.]+)\.html$ /$1.php [L,NC]

これはなどのURIを処理し/sub/properties/abc-123.html、に転送します/sub/properties.php?id=abc-123

于 2013-03-14T20:55:59.307 に答える