0

次のような URL を書き換えたい:

http://domainname.com/all-studio-methods

に:

http://domainname.com/review.php?id=25&cas=all-studio-methods

現在、私の.htaccessファイルは次のようになっています。

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^([^/\.]*)$ review.php?id=$1&cas=$2 [L]

しかし、それは正しく機能していません。私は何を間違っていますか?

4

1 に答える 1

1

コメントに記載されているように、次のルールがあります。

RewriteRule ^([^/\.]*)$ review.php?id=$1&cas=$2 [L]

$1とは$2、正規表現で一致したグループ化に置き換えられる後方参照です^([^/\.]*)$。これには、1 つのグループ化 (完全な一致) しかありません。$2別のグループがないため、常に空白になります。これはまた、それ$1が完全に一致することを意味し (例: all-studio-methods )、次のような URI を取得します。

review.php?id=all-studio-methods&cas=

これは明らかにあなたが望むものではありません。コメントは、がどこからid=25来たのかを尋ねます。URI からのものではありません/all-studio-methods。に書き換えるにid=25は、URI のどこかにある必要があります。たとえば、次のようになります。

http://domainname.com/25-all-studio-methods

次に、次のようなルールがあります。

RewriteRule ^([0-9]+)-([^/\.]*)$ review.php?id=$1&cas=$2 [L]

本当に URI に を入れたくない場合は、id を取らないよう25-に php コードを書き直す必要があります。review.phpを指定して、データベースから ID を内部的に取得する必要がありますcas

または、 IDにマップするために書き換えマップを作成することもできます。casどちらの場合でも、それを行うコードを書いているので、ほとんど同じことになります。

于 2012-08-24T19:08:22.177 に答える