2016-11-22 144 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,但你明白了。