2012-10-22 83 views
2

我想從我的動態創建的URL中刪除'%252F'。 我有一個php文件,創建鏈接與%2F而不是/。 這些鏈接在URL-Bar中表示爲%252F,而不是/,這會導致一些問題。
我試圖用.htaccess文件實現的目標是將所有%2F重定向到/或將全部%252F重命名爲/,因爲我無法更改創建鏈接的php代碼。
用mod_rewrite從網址中刪除%2F

這是我的.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] 

我無法得到它的工作,也許別人可以幫助我。 非常感謝!

+1

爲什麼不修復破損的PHP腳本呢? –

+0

正如我所說我無法改變它! – basbebe

回答

0

的線條:

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

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

需要有斜線刪除。 URI的通過htaccess的文件的規則已經發送的前導斜槓剝下:

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

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

不知道什麼RewriteRule !^/ /%1/%2 [QSA]線是應該做的,它看起來像你剝了結尾的斜線?

+0

我發現你在這裏想要的規則:[link](http://forum.modrewrite.com/viewtopic.php?f=10&t=6827) 但是這兩條規則似乎都沒有改變任何東西。 以下規則讓我擺脫了第一個%252F: 'RewriteCond%{THE_REQUEST}^[AZ] {3,} \ s/+ index \ .php \?dir =%2F([^ \ s] + )[NC] RewriteRule ^%1? [R = 301,L]' – basbebe

0

我設法擺脫在URL中的第一%252F和「堆積」斜槓的問題:

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不過的問題。