0

こんにちは、すべての URL がスラッシュで終わるように修正されていることを確認しようとしています。

http://www.mydomain.com/blogPost 

それはなるだろう

http://www.mydomain.com/blogPost/

この質問への答えはここで見つかりました。一部のページをスラッシュ [.htaccess] で終わらせるにはどうすればよいですか(Andrew G. Johnson に感謝)。

このソリューションは、$_GET 変数がある場合を除いて、ほぼ完全に機能します。したがって、URLにこのような $_GET 変数がある場合

http://www.mydomain.com/blogPost/^start=10 

htaccessはそれを次のように書き換えます

http://www.mydomain.com/blogPost/^start=10/ 

これはエラーを引き起こします。

スタックオーバーフローの質問からコピーした元のコードは次のようになります

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]

したがって、$_GET 変数があるときに htaccess が URL を無視するようにするために、上記のコードに RewriteCond を追加して、^ の REQUEST_URI をチェックしようとしました (このサイトでは、$_GET 変数は ? ではなく ^ で始まるため)。次のすべてですが、何も機能しません。誰でも私を正しい方向に向けることができますか

RewriteCond %{REQUEST_URI} [^\^]

RewriteCond %{REQUEST_URI} ![^\^]

RewriteCond %{REQUEST_URI} ^(.*[^\^]) 

({QUERY_STRING}でも上記を試しました)

4

1 に答える 1

1

これにより、a を含む URI^は無視されるようになります。

RewriteCond %{REQUEST_URI} !\^

ただし、その前にスラッシュがない場合は対処しません。これは、この別のルールで処理する必要があります。

RewriteCond %{REQUEST_URI} [^/]\^
RewriteRule ^(.*)\^(.*)$ /$1/^$2 [L,R,NE]
于 2012-08-20T13:28:14.463 に答える