4

私には次のルールがあります。1つの「our-stores」は他の「PLAINPAGES」ルールとは異なる場所にリダイレクトします。


    Options +FollowSymlinks
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RedirectMatch 302 /construction.html http://www.{website}.com/construction-services
    RedirectMatch 302 /construction/endless-pools.html http://www.{website}.com/construction-services/endless-pools

    # PRODUCT AND SERVICES
    RewriteCond %{REQUEST_URI} !\.html$
    RewriteRule ^(.*)/(.*)$ /rewrite.php?sub=$1&second=$2 [NC]

    # PLAIN PAGES
    #RewriteRule ^/$ /index.php [L,NC]
    RewriteRule ^signup-free$ /signup-free.php [L,NC]
    RewriteRule ^about$ /content.php?page=1 [L,NC]
    RewriteRule ^links$ /content.php?page=2 [L,NC]
    RewriteRule ^portfolio$ /portfolio.php [L,NC]
    RewriteRule ^our-stores$ /our-stores.php [L,NC]
    RewriteRule ^contact$ /contact.php [L,NC]
    RewriteRule ^products-list$ /lists.php?action=products [L,NC]
    RewriteRule ^services-list$ /lists.php?action=services [L,NC]

/our-storesapacheと入力すると、次の場所にリダイレクトされます。/our-stores/?sub=our-stores&second=

残りの部分(サインアップなし、約、リンク、ポートフォリオなど)が正常に機能しているため、わかりません。

誰かがこれを手伝ってくれますか?

ありがとうございました。

4

3 に答える 3

2

一般的なルールは一番下に移動され、REQUEST_FILENAME条件は静的リダイレクトの下に移動されました。さらに、/?特定のリダイレクトのそれぞれにオプションの末尾のスラッシュを一致させるためにを追加しました。最後に、一般的なルールは、を使用しないように改善されていますが、より貪欲でない方法で.*最初のルールまですべてを一致させるようになっています。/次に、.+の後に使用し/て、少なくとも1つの文字が存在することを確認します。したがって、末尾にスラッシュが付いたURLは一致しません。がないジェネリックスがある場合はsecond=、に戻って.*ください。

これらはすべて、htaccessテスターで正しく機能します。

RedirectMatch 302 /construction.html http://www.{website}.com/construction-services
RedirectMatch 302 /construction/endless-pools.html http://www.{website}.com/construction-services/endless-pools

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^signup-free/?$ /signup-free.php [L,NC]
RewriteRule ^about/?$ /content.php?page=1 [L,NC]
RewriteRule ^links/?$ /content.php?page=2 [L,NC]
RewriteRule ^portfolio/?$ /portfolio.php [L,NC]
RewriteRule ^our-stores/?$ /our-stores.php [L,NC]
RewriteRule ^contact/?$ /contact.php [L,NC]
RewriteRule ^products-list/?$ /lists.php?action=products [L,NC]
RewriteRule ^services-list/?$ /lists.php?action=services [L,NC]

# PRODUCT AND SERVICES
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^([^/]+)/(.+)$ /rewrite.php?sub=$1&second=$2 [NC]
于 2013-01-17T14:19:12.193 に答える
0

記号「-」は正規表現の特殊文字です。範囲(az、à-9など)を定義します。

それを脱出してみてください。

RewriteRule ^our\-stores$ /our-stores.php [L,NC]
于 2013-01-17T13:11:24.247 に答える
0

。という名前の実際のファイル(またはおそらく空のディレクトリ)があると思われour-storesます。

これにより、がトリガーRewriteCond %{REQUEST_FILENAME} !-dされ、書き換えられなくなります。

次に、存在しないそのディレクトリ(index.phpなど)からデフォルトページを読み込もうとするため、それを書き直そうとし、?sub=our-stores&second=パラメータが追加されます。

于 2013-01-17T13:15:21.770 に答える