如果有参数,则在htaccess中进行特定的重写

时间:2019-03-20 13:46:37

标签: wordpress .htaccess

我在一个文件夹中安装了WordPress,并且安装了不同的CMS。

赞:

https://example.com/ => WordPress
https://example.com/en/ => Custom CMS.

我的htaccess是:

RewriteEngine on
RewriteRule ^(en)($|/) - [L]

# 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]
</IfModule>
# END WordPress

这很好。

现在,我将所有内容移至WordPress安装中。我需要预览更改。我需要这个:

https://example.com/ => WordPress
https://example.com/en/ => Custom CMS
https://example.com/en/?preview_id=142&preview=true => WordPress

这是当URL上有“预览”参数时,我需要显示WordPress网站。

我尝试过:

RewriteEngine on

RewriteCond %{QUERY_STRING} !preview=true [NC]
RewriteRule . /index.php [L]

RewriteRule ^(en)($|/) - [L]

# 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]
</IfModule>
# END WordPress

但是它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

正如您所说的I need to show the WordPress website when there is a "preview" parameter on the URL和您所做的一样,此RewriteCond %{QUERY_STRING} !preview=true [NC]的使用方法与此相反,因此请将其更改为:

RewriteCond %{QUERY_STRING} preview=true [NC]

,还要在目标?的末尾添加广告RewriteRule . /index.php?,以避免附加查询字符串并进行循环。

您的规则应如下所示:

RewriteCond %{QUERY_STRING} preview=true [NC]
RewriteRule . /index.php? [L]

答案 1 :(得分:-1)

请仅删除.htaccess文件。 删除文件系统后,系统会自动创建新文件,对您来说效果很好。