1

少し奇妙な質問ですが、すべてのURLにクエリ文字列を設定したいと思います。パラメータが設定されていない(または空である)場合は、デフォルトを含めるようにリダイレクトしたいと思います。

例えば:

example.com would need to requrect to example.com?param=a

example.com?param would also need to redirect to example.com?param=a

パラメータが設定されていて、既知の値のリストの一部である場合は、通常どおり続行する必要があります。

example.com?param=(a|b|c|d) would go to the respective page a,b,c or d

サイトの一部のページでは、他のパラメーターを使用して並べ替えとページ分割を行うため、ルールでは、これが唯一のクエリ文字列であるとは想定できません。

私はいくつかのことを試しましたが、リダイレクトループでスタックし続けました。これはデフォルトのパラメータを設定しようとしています:

RewriteCond %{QUERY_STRING} !(^|&)param=(a|b|c|d)($|&)
RewriteRule ^(.*)$ /index.php?rq=$1&param=a [L,QSA]

主なCMS書き換えルールは次のとおりです。

RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA]

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

1
RewriteCond %{QUERY_STRING} !(^|&)param=(a|b|c|d)($|&)
RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ $1?%{QUERY_STRING}&param=a [L]

RewriteCond %{REQUEST_URI} !^\/*(index\.php|blog|admin\/assets|site\/assets|robots.txt|sitemap(|\-[0-9]+)\.xml|products.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php?rq=$1 [L,QSA]
于 2013-01-17T16:29:07.077 に答える