私は確かに .htaccess ファイルの専門家ではないので、ご容赦ください..
私は素敵な単純なルールを持っています:
RewriteCond %{DOCUMENT_ROOT}/landing-pages/$1.aspx -f
RewriteRule ^/(.[^/]*)/?$ /landing-pages/$1.aspx [NC,L,QSA]
だから私がページに行くと:
http://myexampledomain.com/my-landing/page/
次のように正しく書き換えられます。
http://myexampledomain.com/landing-pages/my-landing-page.aspx
元の URL にクエリ文字列が含まれるまで、これは正常に機能します。
http://myexampledomain.com/my-landing/page/?foo=bar
この時点で、書き換え条件が満たされていないため (クエリ文字列が $1 の一部であると仮定しますか?)、ページが見つかりません。
私は自分の状態を次のように変更しようとしました:
RewriteCond /landing-pages/%{REQUEST_URI}.aspx -f
ただし、 %{REQUEST_URI} には先頭と末尾の両方のスラッシュが含まれているため、どちらも機能しないと思われます。
クエリ文字列を無視する条件を取得する方法について誰かがアイデアを持っていますが、ルールにクエリ文字列を追加しますか?
どんな助けでも感謝します。
psルーティングが.net 3.5+で利用できることは知っていますが、現在それはオプションではありません.Heliconのasapi_rewriteモジュールを介して.htaccessをすでに使用しています。
ありがとう
編集:
それ以来、別の条件とルールを追加して、問題がどこにあるかを絞り込んでみました。
RewriteCond %{QUERY_STRING} foo=bar
RewriteRule ^/(.*)/?$ /landing-pages/$1.aspx? [NC,L,QSA]
そのため、クエリ文字列 foo=bar が存在する場合、これは具体的に Rewrite に設定されています。これを使用すると、書き換え後に要求された URL が次のようになることがわかります。
http://myexampledomain.com/landing-pages/my-landing-page/?foo=bar.aspx?foo=bar
それは確かに、私が期待した動作ではありません..