2014-07-21 157 views
1

我的問題是,當我輸入http://example.com/admin/時效果很好,$_GET['decode']包含正確的信息,我可以使用它。但是當我輸入http://example.com/admin(沒有斜槓)時,我的URL重定向到http://example.com/admin/?decode=admin,並且一切都搞亂了。有人可以幫助我嗎?URL漏洞末尾的斜線.htaccess

這裏是我的.htaccess

RewriteEngine on 
Options +FollowSymlinks 

<FilesMatch "(config.php|defines.php|functions.php)"> 
    Order Allow,Deny 
    Deny from all 
</FilesMatch> 

Header set X-UA-Compatible "IE=Edge,chrome=1" 

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L] 

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

RewriteRule ^([^\.]+)$ ./index.php?decode=$1 [L,QSA] 

php_value date.timezone "Europe/Bratislava" 

回答

2

這是因爲mod_dir是增加你的最後一條規則後的目錄URI(/admin)尾部斜槓被mod_rewrite運行。

試試這個代碼:

DirectorySlash Off 
RewriteEngine on 
Options +FollowSymlinks 

<FilesMatch "(config.php|defines.php|functions.php)"> 
    Order Allow,Deny 
    Deny from all 
</FilesMatch> 

Header set X-UA-Compatible "IE=Edge,chrome=1" 

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,NE,L] 

## Adding a trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{THE_REQUEST} \s/+(.*?)[^/][?\s] 
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301] 

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

php_value date.timezone "Europe/Bratislava" 
+0

抱歉,但這是不工作的權利 – debute

+0

現在就來試試。我在頂部添加了「DirectorySlash Off」。 – anubhava

+0

它仍然將我重定向到'/ admin /?decode = admin' – debute