RewriteRule无法在生产服务器上运行

时间:2015-12-04 07:57:12

标签: php .htaccess mod-rewrite redirect

对于我当前的项目,我必须重定向301一些链接,但当你输入一些额外的get参数时,参数需要在新网址上加后缀。

示例:

旧: / language / nl / article-1 /?test = 123

新: /语言/ NL / FA1-artcile-1 /?测试= 123

所以我使用以下代码:(在我的开发环境中工作正常)

RewriteEngine On
Options +FollowSymLinks
RewriteBase /language/nl
RewriteRule /artcile-1/*    /language/nl/fa1-artcile-1/$1 [R=301,L]

但是一旦在我的生产环境中它不起作用,它仍然会重定向到新的URL,但是get参数不会附加在新的URL上。

编辑:它会重定向,但不会附加参数。

编辑2:完全填充

# 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部分之前,我有大约30个。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

有这样的话:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteRule ^language/nl/article-1/?$ /language/nl/fa1-artcile-1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

答案 1 :(得分:0)

您需要附加query string

# 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,QSA]
</IfModule>

# END WordPress

答案 2 :(得分:0)

这里的其他答案可能也是正确的。但就我的情况而言,他们不会工作。

它正在运行的环境是一个MS Azure环境,所以我需要一个web.config文件而不是.htaccess文件(但是,它适用于某些部分)。

感谢所有快速帮助和思考!