htaccess的具体重写规则,否定单词

时间:2018-04-03 09:47:39

标签: php regex wordpress .htaccess regex-negation

我试图根据单词的否定重写或重定向带有正则表达式的URL。

方案如下:

我在example.com/wp-blog上安装了wordpress,但可视化是通过example.com/blog上的API实现的。我需要停用对/wp-blog的访问权限并将其重定向到/blog,但保留对/wp-blog/wp-admin的访问权限。

我在htaccess上尝试以下条件:

RewriteCond ^wp-blog/((?!wp-admin).)*$ [NC]
RewriteRule ^(.*)$ /blog/$1  [R=301,L]

但没有成功。

我也试试这个:

Redirect 301 ^wp-blog/((?!wp-admin).)*$ /blog/$1

还有这个:

RewriteRule ^wp-blog/wp-admin $ /wp-blog/wp-admin $1 [L,NC]
RewriteRule ^wp-blog/wp-login.php $ /wp-blog/wp-login.php $1 [L,NC]
RewriteRule ^wp-blog/(?!.*wp-admin)$ /blog/$1 [R=301,L,NC]

我尝试的所有组合都没有成功。那么如何才能将/wp-blog重定向/重写为/blog,但可以访问/wp-blog/wp-admin

非常感谢你。

2 个答案:

答案 0 :(得分:1)

您可以使用request_uri来测试以下路径是否为wp-admin然后编写规则以将所有内容重写为/blog

RewriteCond %{REQUEST_URI} ^/?wp-blog(?!/wp-admin)
RewriteRule ^/?wp-blog(/.*)? blog$1 [R=301,L]

答案 1 :(得分:0)

无需使用.htaccess执行任何操作,您可以直接使用WordPress完成任务。

可以分两步完成

第1步:在你的root上创建index.php,其内容低于

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog/wp-blog-header.php' ); /** here wp-blog is place as your folder name */

步骤2:现在将数据库中的“staging.domain.com”更改为“staging.domain.com/wp-blog”(对于此下载sql&gt;打开并编辑替换&gt;上传新的sql)。

现在您在staging.domain.com网址上运行完整网站,但文件是从“wp-blog”文件夹调用的。