.htaccess 重定向“;。htaccess&x201D;使用相同的文件夹&;文件名
不久前,我在CMS上重建了一个站点。正如所料,谷歌搜索控制台经常会出现产生404个爬行错误的URL,我会在.htaccess 重定向“;。htaccess&x201D;使用相同的文件夹&;文件名,.htaccess,redirect,.htaccess,Redirect,不久前,我在CMS上重建了一个站点。正如所料,谷歌搜索控制台经常会出现产生404个爬行错误的URL,我会在.htaccess文件上使用301立即重定向到它们的新等价物 问题是我遇到了一个旧页面的URL,它看起来像这样: http://www.example.com/example Redirect 301 /example http://www.example.com/example.php 新页面现在称为http://www.example.com/example.php 但是,也有一个
.htaccess
文件上使用301立即重定向到它们的新等价物
问题是我遇到了一个旧页面的URL,它看起来像这样:
http://www.example.com/example
Redirect 301 /example http://www.example.com/example.php
新页面现在称为http://www.example.com/example.php
但是,也有一个名为example
的文件夹,因此如果我添加如下重定向:
http://www.example.com/example
Redirect 301 /example http://www.example.com/example.php
该文件夹中的所有内容也会被重定向,因此一个名为http://www.example.com/example/product.php
现在显示为http://www.example.com/example.php/product.php
是否有一种方法可以成功重定向旧URL,而不必重命名文件夹
示例
请清除浏览器缓存,然后将以下代码放在主根目录.htaccess
文件中:
DirectorySlash Off
RewriteEngine on
RewriteCond %{THE_REQUEST} \s/+example [NC]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*) /$1.php [R=302,L]
上面的代码将停止directoryslash
并使其关闭off
,因此没有没有斜杠的文件作为默认目录,然后检查example
中是否存在QUERY\u STRING
中的RewriteCond%{REQUEST\u FILENAME}\.php-f
,它将检查是否将.php
添加到此字符串,该文件是否真的位于目录中?我们在根目录中已经有了example.php
,所以它将转到最后一行,将传递上述规则的任何字符串重定向到本身.php
,这正是您想要的
上面的代码将只捕获根目录中的示例
,仅包含示例
,但如果要继承其他子文件夹或将此规则应用于整个站点,因此,只要有不带扩展名的字符串,文件的优先级将为,将以下代码放在主根目录.htaccess
文件中:
DirectorySlash Off
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*) /$1.php [R=302,L]
测试此代码后,如果正常,请将302
更改为301
以实现永久重定向请清除浏览器缓存,然后将以下代码放在主根目录下。htaccess
文件:
DirectorySlash Off
RewriteEngine on
RewriteCond %{THE_REQUEST} \s/+example [NC]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*) /$1.php [R=302,L]
上面的代码将停止directoryslash
并使其关闭off
,因此没有没有斜杠的文件作为默认目录,然后检查example
中是否存在QUERY\u STRING
中的RewriteCond%{REQUEST\u FILENAME}\.php-f
,它将检查是否将.php
添加到此字符串,该文件是否真的位于目录中?我们在根目录中已经有了example.php
,所以它将转到最后一行,将传递上述规则的任何字符串重定向到本身.php
,这正是您想要的
上面的代码将只捕获根目录中的示例
,仅包含示例
,但如果要继承其他子文件夹或将此规则应用于整个站点,因此,只要有不带扩展名的字符串,文件的优先级将为,将以下代码放在主根目录.htaccess
文件中:
DirectorySlash Off
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*) /$1.php [R=302,L]
测试此代码后,如果没有问题,请将302
更改为301
为永久重定向不清楚问题出在哪里。我很抱歉。有一个名为/example的页面的旧链接(只是一个页面而不是文件夹),需要重定向到/example.php。还有一个名为/example的新文件夹,因此URL现在会导致403禁止的错误。如何将此URL(以前只是一个页面)重定向到新页面/example.php,而不引起新文件夹/example的内容问题,也不必重命名所述新文件夹。您只需使用RedirectMatch 301^/example/?$/example.php
并在清除浏览器缓存后对其进行测试。目前尚不清楚问题是,我道歉。有一个名为/example的页面的旧链接(只是一个页面而不是文件夹),需要重定向到/example.php。还有一个名为/example的新文件夹,因此URL现在会导致403禁止的错误。如何将此URL(以前只是一个页面)重定向到新页面/example.php,而不引起新文件夹/example的内容问题,也不必重命名所述新文件夹。您只需使用RedirectMatch 301^/example/?$/example.php
并在清除浏览器缓存后对其进行测试。很高兴提供帮助,祝你一切顺利很高兴能帮助你,祝你一切顺利