0

Apache Web サーバーで .htaccess ReWrite を動作させるのに苦労しています。いくつかのチュートリアルを読み、Grep との正規表現の一致をテストしました。

コードは次のとおりです。

    RewriteRule \?action=viewArticle&articleId=([0-9]*)&categoryId=([0-9])$ essays/$1 [R=301,L]

ここに私が一致させようとしているURLがあります:

http://mysite.com/?action=viewArticle&articleId=15&categoryId=1

そしてに変更

http://mysite.com/essays/15

更新: 解決策! ジョンからの非常に優れたチュートリアルで。<base href="/">CSS を正しく機能させるために、ヘッダー ファイルを挿入することは非常に重要でした。

最終的な書き直しは次のようになりました。

RewriteCond %{THE_REQUEST} /?action=viewArticle&articleId=([0-9]*)&categoryId=([0-9])
RewriteRule ^$ /essays/%1? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^essays/([0-9]+) /?action=viewArticle&articleId=$1&categoryId=([0-9]) [L]
4

1 に答える 1

2

内のホストまたはクエリ文字列を照合することはできません。ディレクティブ内のおよび変数RewriteRuleと照合する必要があります。%{HTTP_HOST}%{QUERY_STRING}RewriteCond

RewriteCond %{HTTP_HOST} mysite\.com$ [NC]
RewriteCond %{QUERY_STRING} ^action=viewArticle&articleId=([0-9]*)&categoryId=([0-9])$
RewriteRule ^$ /essays/%1? [L,R=301]

これにより、誰かhttp://mysite.com/?action=viewArticle&articleId=15&categoryId=1http://mysite.com/essays/15

%{HTTP_HOST}htaccess ファイルが単一のホストのみを提供する場合、この条件は必要ありません。

于 2012-09-20T02:07:54.357 に答える