-1

私はこのようなものが必要index.php?page=homeです/home

index.php?page=products&cat=chairsすることが/products/chairs

これを達成するための mod_rewrite ルールは何でしょうか?

編集済み

ホーム以外のページがあるので、.htaccess ファイルの全内容は現在

RewriteEngine On
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L]
RewriteRule   ^/products(:/([^/]+))?   /index.php?page=products&cat=$1 [L]

しかし、ナビゲートする/products/chairsと、「オブジェクトが見つかりません」というエラーが表示されます。

4

2 に答える 2

1
RewriteEngine on
RewriteRule   ^/home/?$                /index.php?page=home [L]
RewriteRule   ^/products(:/([^/]+))?   /index.php?page=products&cat=$1 [L]

/homeと 、と/home/の両方/productsを書き換え/products/ます (どちらが意図した動作であるかを指定しませんでした); catそのような場合、空のパラメーターを取得することに注意してください。

編集: これはテスト済みの .htaccess で、R=301 を残して書き換え結果を確認します。.htaccess と index.php の両方が同じディレクトリ (私の場合は webroot) にあります。

RewriteEngine on
RewriteRule ^([^/\.]+)/?$          index.php?page=$1 [R=301,L]
RewriteRule ^products/([^/]+)?/?   index.php?page=products&cat=$1 [R=301,L]
于 2012-05-27T02:58:22.993 に答える
0

mod_rewrite と .htaccess を有効にしてからhttpd.conf、このコードをディレクトリの.htaccess下に配置します。DOCUMENT_ROOT

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=(products)&cat=([^\s]+) [NC]
RewriteRule ^ %1/%2 [R=302,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=(home)\s [NC]
RewriteRule ^ %1 [R=302,L]

RewriteRule   ^(products)/([^/]+)/?$ index.php?page=(products)&cat=$1 [L,QSA,NC]

RewriteRule   ^(home)/?$ index.php?page=$1 [L,QSA,NC]

正常に動作していることを確認したら、に変更R=302してください。R=301

于 2012-05-27T04:04:06.083 に答える