0

URLをphpの変数に書き換えるように取得しようとしていますが、

これまでのところ、私は持っています:

RewriteEngine On
RewriteRule ^sub/(.*).html$ index.php?sub=$1
RewriteRule ^(.*).html$ index.php?page=$1

ページ 1 は機能していませんが、/sub/ は完全に正常に機能しています。

書き直しルール初心者ですみません。

何か光を当てることができますか?問題は、私が持っているように書き換えルールをスタックできないことだと思います...

ディレクトリ構造を変更することはできないため、これを使用する必要があります。

page.html
page2.html
sub/123.html
sub/827.html

ありがとうございます!

〜ジミョム

編集

ルールの最後に [NC,L] を追加すると、この問題が解決します。

すなわち

RewriteEngine On
RewriteRule ^sub/(.*).html$ index.php?sub=$1 [NC,L]
RewriteRule ^(.*).html$ index.php?page=$1 [NC,L]

ただし、/sub/ ではない別のサブフォルダー、つまり /src/ で書き換えないようにするにはどうすればよいでしょうか。

もう一度ありがとう〜Jmyeom

4

2 に答える 2

0

URI 構造が実際に次のようになっている場合:

/page.html
/page2.html
/sub/123.html
/sub/827.html

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

RewriteRule ^/sub/(.*).html$ index.php?sub=$1 [NC,L]
RewriteRule ^/(.*).html$ index.php?page=$1 [NC,L]

それ以外の場合は、これを使用して、不要な書き換えを排除します。

RewriteRule ^/.*/sub/(.*).html$ index.php?sub=$1 [NC,L]
RewriteRule ^/.*/(.*).html$ index.php?page=$1 [NC,L]

パターンを除外するには、次のようにします。

RewriteCond %{REQUEST_URI} !^/src/
RewriteRule ^/(.*).html$ index.php?page=$1 [NC,L]

また、上記のルールはデフォルトで 302 (一時的なリダイレクト) を行うことに注意してください。ほとんどの人は、特に SEO を気にする場合は、301 (パーマネント リダイレクト) を本当に望んでいます。[R=301,NC,L]

于 2013-05-11T11:53:18.770 に答える