在我的.htaccess文件中,我有以下重定向:
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 :(得分:0)
想出来。您需要将$
表达式添加到父文件夹的末尾,如下所示:
Redirect 301 /About-Us$ http://www.example.com/about-us
然后所有子文件夹和文件都将正确重定向
答案 1 :(得分:0)
如果你的所有网址,或者至少那些不是文件的网址都应该是小写的,那么只需重写一次就可能会更好:
在.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);
这具有通过不必抢占混合大小写URL的每种可能组合而更加健壮的优点。你不必使用PHP,但你明白了。