我正在将一个ASPX站点移动到Wordpres - 从IIS服务器移动到Apache - 我在查找带有查询字符串的页面时遇到了问题。我查看了Apache文档,并尝试使用mod_rewrite,但到目前为止还没有运气。
例如,我想重定向这些页面:
www.mysite / Product / Product.aspx?mapid = 324 $ to www.mysite /蓝色的小部件/ widget7 / www.mysite / Product / Product.aspx?mapid = 681 $ to www.mysite /蓝色的小部件/ widget12 / www.mysite / Product / Product.aspx?mapid = 841 $ to www.mysite /蓝色的小部件/ widget82 /
这是我在的地方。我已经尝试了几次迭代,但无法使其工作。我开始认为它可能与服务器和Wordpress生成的前几条规则有关。该站点是一个插件域,服务器将其视为子域。
我的重写是最后三个。任何想法为什么这些不起作用?谢谢你的帮助。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~username/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~username/mysite/index.php [L]
RewriteCond %{QUERY_STRING} ^mapid=324$ [NC]
RewriteRule ^/Product/Product\.aspx(.*)$ ^https://www.mysite/blue-widgets/widget7/? [L,R=302,NC]
RewriteCond %{QUERY_STRING} ^mapid=681$ [NC]
RewriteRule ^/Product/Product\.aspx(.*)$ ^https://www.mysite/blue-widgets/widget12/? [L,R=302,NC]
RewriteCond %{QUERY_STRING} ^mapid=841$ [NC]
RewriteRule ^/Product/Product\.aspx(.*)$ ^https://www.mysite/blue-widgets/widget82/? [L,R=302,NC]
</IfModule>
答案 0 :(得分:1)
我相信以下内容可行:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^mapid=324$ [NC]
RewriteRule /Product/Product\.aspx https://www.example.com/blue-widgets/widget7/? [L,R=302,NC]
RewriteCond %{QUERY_STRING} ^mapid=681$ [NC]
RewriteRule /Product/Product\.aspx https://www.example/blue-widgets/widget12/? [L,R=302,NC]
RewriteCond %{QUERY_STRING} ^mapid=841$ [NC]
RewriteRule /Product/Product\.aspx https://www.example/blue-widgets/widget82/? [L,R=302,NC]
RewriteBase /~username/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~username/mysite/index.php [L]
为了更好地解释其他人,规则的顺序很重要。由于Wordpress规则更改了RewriteBase并更改了URL,因此如果它们位于底部,则永远不会触及.aspx页面的规则。