2013-10-25 51 views
4

我也想301重定向任何URL在.php結束。然後,我在內部將任何以/結尾的內容重定向到/.php之前的名稱。這些都獨自工作。但把它們放在相同的.htaccess我得到The page isn't redirecting properlyhtaccess重寫如果URL擴展是.php刪除它

我在這裏做錯了什麼?

RewriteRule ^(.*)\.php$ /$1/ [R=301,L] 

RewriteRule ^(.*)/$ $1.php [QSA,L] 

回答

5

這些規則應該爲你工作:

RewriteEngine On 

## Adding a trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule . %{REQUEST_URI}/ [L,R=301] 

## hide .php extension 
# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC] 
RewriteRule^/%1/ [R=301,L,NE] 

# To internally forward /dir/file/ to /dir/file.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.+?)/?$ /$1.php [L] 
+0

這不工作,謝謝。你知道如何強制結尾的斜槓嗎?當它輸入到地址欄時,它不在那裏? –

+0

我更新了答案,以在URI中添加尾部斜槓。 – anubhava

+0

這工作完美。非常感謝你 –