-1

例えば:

www.site.com/your/blue

リダイレクトされます...www.site.com/your/index.php?= blue

現在、誰かがwww.site.com/your/blueと入力すると、ページが存在しないというエラーがスローされます。誰かがこれで私を助けることができますか?前もって感謝します。

4

2 に答える 2

2

mod rewriteを使用します:

RewriteEngine On   
RewriteRule ^(.*)/(.*)/$ $1/index.php?p=$2 [L]

p(空にすることはできないため、クエリ文字列の名前として追加しました)


さらに、と書き換えルールの間に次のコード行を追加してRewriteEngine On、末尾にスラッシュがあることを確認できます(これをお勧めします)。

# Add trailing slash
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ http://www.site.com/$1/ [R=301,L]
于 2012-06-01T12:57:36.237 に答える
2

この種のリダイレクトには、Modrewriteを使用する必要があります。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ $1/index.php?page=$2 [L]
</IfModule>

この正規表現は、クリーンURLがサイトに渡され、終了スラッシュの有無にかかわらず機能することを保証します。

注意:PHPに渡されるパラメーターには名前が必要なので、page=を追加しました。

制限なしで動作させたい場合(スペースは動作します)

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^([^/]+)/([^/]+)/?$ $1/index.php?page=$2 [L]
</IfModule>
于 2012-06-01T13:02:19.783 に答える