2

動的に作成されたURLから「%252F」を削除したいと思います。%2Fの代わりにリンクを作成するphpファイルがあります/。リンクはURLバーに表示され、%252F代わり/にいくつかの問題が発生します。
.htaccess-fileを使用して達成しようとしているのは、リンクを作成するphpコードを変更できないため、すべてをリダイレクト%2Fする/か、すべての名前を変更することです。%252F/

これは私の.htaccessです

RewriteEngine on
Options +SymlinksIfOwnerMatch
RewriteBase /

RewriteCond %{HTTP_HOST} subdomain.mydomain.com
RewriteCond %{REQUEST_URI} (.*)/style.css [OR]
RewriteCond %{REQUEST_URI} (.*)/script.js [OR]
RewriteCond %{REQUEST_URI} (.*)/logo.png
RewriteRule (.*) http://www.mydomain.com%{REQUEST_URI} [R=301,NC,L]

RewriteCond %{REQUEST_METHOD}  !=POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
RewriteRule ^(([^/]+/)*)index\.php$ http://subdomain.mydomain.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} \ /([^\ \?]*)([^\ \?]*)%2f(\?.*)?\  [NC]
RewriteRule !^/ /%1/%2 [QSA]

RewriteRule ^(/.+)%2f(.*)$ $1/$2 [NC,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?dir=([^\s]+) [NC]
RewriteRule ^ %1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=/$1 [L]

私はそれを機能させることができません、多分誰かがこれで私を助けることができます。どうもありがとうございます!

4

2 に答える 2

0

%252FURL の最初の部分と、スラッシュの「スタック」の問題を取り除くことができました。

RewriteCond %{REQUEST_METHOD}  !=POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
RewriteRule ^(([^/]+/)*)index\.php$ http://subdomain.mydomain.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?dir=%2F([^\s]+) [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?dir=([^\s]+) [NC]
RewriteRule ^ %1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?dir=/$1 [L]

%252Fただし、まだ URL に含まれているという問題があります。

于 2012-10-23T09:44:29.490 に答える
0

台詞:

RewriteCond %{THE_REQUEST} \ /([^\ \?]*)([^\ \?]*)%2f(\?.*)?\  [NC]
RewriteRule !^/ /%1/%2 [QSA]

RewriteRule ^(/.+)%2f(.*)$ $1/$2 [NC,QSA]

先頭のスラッシュを削除する必要があります。htaccess ファイルのルールを介して送信される URI では、先頭のスラッシュが取り除かれます。

RewriteCond %{THE_REQUEST} \ /([^\ \?]*)([^\ \?]*)%2f(\?.*)?\  [NC]
RewriteRule ^ /%1/%2 [QSA]

RewriteRule ^(.+)%2f(.*)$ $1/$2 [NC,QSA,L]

行が何をするべきかわからないRewriteRule !^/ /%1/%2 [QSA]、末尾のスラッシュを削除しているように見えますか?

于 2012-10-22T17:26:33.863 に答える