首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >htaccess不使用WordPress重定向

htaccess不使用WordPress重定向
EN

Stack Overflow用户
提问于 2015-12-01 05:31:44
回答 2查看 337关注 0票数 0

我在一个WordPress网站上工作,多亏了一些顽固的插件,我需要重写URL以使结构整洁。然而,我遇到了一个奇怪的问题,我不能自己解决它。

我尝试做的是:重写所有URL,如下所示: domain.com/location/corporate-housing-SOMETHING/

收信人:Domain.com/corporate housing/to/

如果我包含完整的域路径,它会成功重定向。当我去掉域名,没有其他的时候,它给了我一个404。我已经在多个浏览器上进行了测试,以确保没有缓存任何内容。我的.htaccess文件如下:

代码语言:javascript
复制
#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

根据建议更改为此,但仍不起作用:

代码语言:javascript
复制
#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中添加了以下内容:

代码语言:javascript
复制
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();
}

然后在它生效后注释掉刷新重写。

EN

回答 2

Stack Overflow用户

发布于 2015-12-01 05:38:22

根据这个问题,你的规则是不正确的。规则应该是RewriteRule {rewrite_pattern} {rewrite_target} [{flags}]

代码语言:javascript
复制
RewriteRule ^/location/corporate-housing-([a-zA-Z0-9-]+)/$ corporate-housing/$1/ [NC,L]
票数 0
EN

Stack Overflow用户

发布于 2015-12-01 06:15:37

您需要将您的代码更改为如下所示。检查真实的文件或文件夹,如果不存在,则转到下一个规则。

代码语言:javascript
复制
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^location/corporate-housing-(.+)/?$ http://www.example.com/corporate-housing/$1 [R=301,NC,L]

RewriteRule ^index\.php$ - [L]
RewriteRule . /index.php [L]

让我知道这是如何为你工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34008382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档