我正在一个WordPress网站上工作,并且由于一些顽固的插件,我需要重写URL以使结构整洁。但是,我遇到了一个奇怪的问题,我无法自己想出来。htaccess不能用WordPress重定向
我想要做的事: 重写所有的网址,如: domain.com/location/corporate-housing-SOMETHING/
到: domain.com/corporate-housing/SOMETHING/
如果我包含完整的域路径,它将成功重定向。当我拿走域名而没有别的,它给了我一个404。我在多个浏览器上测试过,以确保我没有缓存任何东西。我的.htaccess文件低于:
#DirectoryIndex maintenance.html index.php index.html
# BEGIN WordPress
<IfModule mod_rewrite.c>
Redirect 301 /location/central-west-end /location/corporate-housing-central-west-end/
Redirect 301 /location/claytonbrentwood /location/corporate-housing-claytonbrentwood/
Redirect 301 /location/downtown /location/corporate-housing-downtown/
Redirect 301 /location/west-county /location/corporate-housing-west-county/
Redirect 301 /location/central /location/corporate-housing-central/
Redirect 301 /location/st-charlesofallon /location/corporate-housing-st-charlesofallon/
Redirect 301 /location/south-county /location/corporate-housing-couth-county/
Redirect 301 /location/metro-east-illinois /location/corporate-housing-metro-east-illinois/
RewriteEngine On
RewriteBase/
RewriteRule ^corporate-housing/([a-zA-Z0-9-]+)/?$ /location/corporate-housing-$1/ [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
更改为此建议上,仍无法正常工作:
#DirectoryIndex maintenance.html index.php index.html
# BEGIN WordPress
<IfModule mod_rewrite.c>
Redirect 301 /location/central-west-end /location/corporate-housing-central-west-end/
Redirect 301 /location/claytonbrentwood /location/corporate-housing-claytonbrentwood/
Redirect 301 /location/downtown /location/corporate-housing-downtown/
Redirect 301 /location/west-county /location/corporate-housing-west-county/
Redirect 301 /location/central /location/corporate-housing-central/
Redirect 301 /location/st-charlesofallon /location/corporate-housing-st-charlesofallon/
Redirect 301 /location/south-county /location/corporate-housing-couth-county/
Redirect 301 /location/metro-east-illinois /location/corporate-housing-metro-east-illinois/
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
RewriteRule ^corporate-housing/([^/]+)/?$ /location/corporate-housing-$1/ [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
找到了解决这个。我增加了以下内容的functions.php:
add_action('init', 'add_rewrite_rules');
function add_rewrite_rules() {
add_rewrite_rule('corporate-housing/([0-9a-zA-Z-]+)/?', 'index.php?location-categories=corporate-housing-$matches[1]', 'top');
add_rewrite_rule('furnished-apartments/([0-9a-zA-Z-]+)/?', 'index.php?location-categories=furnished-apartments-$matches[1]', 'top');
flush_rewrite_rules();
}
然后注释掉刷新重写一次,它已生效。
这些重定向如何适合您的重写?因为看起来你仍然在301重定向中包含“位置”。看起来不正确。 –
我不得不添加另一个类别(布置公寓),永久重定向是为了解决这些问题。这些与重写有冲突吗? – DavyH