如何编写.htaccess规则,在更改目录名后将所有url重定向到新url?
我在我的网站上重命名了一个目录。如何将所有现有URL重定向到新URL 例如,我将“MyFolder”重命名为“mydirectory”。那么,如何使用.htaccess文件中的一些规则重定向到和等 以下是my.htaccess文件的内容。这是WordPress的一些其他规则如何编写.htaccess规则,在更改目录名后将所有url重定向到新url?,.htaccess,.htaccess,我在我的网站上重命名了一个目录。如何将所有现有URL重定向到新URL 例如,我将“MyFolder”重命名为“mydirectory”。那么,如何使用.htaccess文件中的一些规则重定向到和等 以下是my.htaccess文件的内容。这是WordPress的一些其他规则 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] R
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^/Wordpress/(.*)$ http://example.com/wordpress/$1 [R=301,L]
</IfModule>
# END WordPress
请告诉我这是如何工作的。您有一些问题 在.htaccess中匹配URL时,请务必记住,在重写规则中匹配的值是相对路径,而不是完整URI(即,它不包括根斜杠)。您可以删除它,也可以将其设置为可选,以使您的代码在VirtualHosts和.htaccess之间进行转换
RewriteRule ^/?Wordpress/(.*)$ http://example.com/wordpress/$1 [R=301,L]
第二个问题是,您有一个与所有URL匹配的重写规则,并且在新规则之前有L标志。L标志使其成为最后一个处理的规则,因此您的新重写规则永远不会被触发,请将其移动到RewriteBase之后
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/Wordpress/(.*)$ http://example.com/wordpress/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#开始WordPress
重新启动发动机
重写基/
重写规则^/Wordpress/(.*)$http://example.com/wordpress/$1[R=301,L]
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
最后,我不太明白的是(可能是因为您创建了一个虚构的示例),如果您移动了Wordpress目录,您将看不到在您的Wordpress.htaccess文件中有重定向,因为对旧路径的请求在移动时不会命中该文件 首先,您需要将规则放在word press rule
RewriteRule之前/index.php[L]
,其次,您需要删除规则中的第一个斜杠:重写规则^Wordpress/(*)$http://example.com/wordpress/$1[R=301,L]
(如果您正在重定向到同一个域,则不需要http://example.com
part)
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/Wordpress/(.*)$ http://example.com/wordpress/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress