2016-11-22 145 views
-1

的錯誤部分在我的.htaccess文件我有以下重定向:301重定向更改URL

Redirect 301 /About-Us http://www.example.com/about-us 
Redirect 301 /About-Us/Profile http://www.example.com/about-us/profile 

的問題是,如果以下地址鍵入:

www.example.com/About-Us/Profile 

上面的代碼將其更改爲以下內容:

www.example.com/about-us/Profile 

總之;它改變了URL的第一位,但不是第二位。我怎樣才能避免這種情況?我知道重定向整個文件夾的RedirectMatch 301 ^/folder/ /new-folder規則,但這不符合我們的需要。另外我知道大寫文件夾不是很好的做法。我沒有建立這個網站。

+0

你是怎麼過的? – Walf

回答

0

想通了。您需要將$表達式添加到父文件夾的結尾,就像這樣:

Redirect 301 /About-Us$ http://www.example.com/about-us 

然後,所有子文件夾和文件將重定向適當

+0

錯誤,'重定向'不接受正則表達式 – anubhava

0

如果所有網址,否則,也許在那個AREN至少那些「T文件應該是小寫的,你可能是一個重寫更好:

.htaccess

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule [A-Z] LC.php [NS,L] 

LC.php(大寫文件名是故意的)

<?php 
$u = explode('?', $_SERVER['REQUEST_URI']); 
$u[0] = strtolower($_SERVER['HTTP_HOST'] . $u[0]); 
header('Location: http://' . implode('?', $u), true, 301); 

這具有通過不具有搶佔大小寫混合網址的每個可能的組合更堅固的優點。你不必使用PHP,但你明白了。