.htaccess 重写为 ?在 url
.htaccess rewrite with ? in url
出于 SEO 原因,我需要将旧的 URL: /index.php?paginaid=1 重定向到 www.example.com/
但是当我像下面这样尝试时,它变成了 www.example。com/paginaid=1
无效:
RewriteRule ^index.php?paginaid=1$ http://www.example.com/ [R=301,L]
无效:
RewriteCond %{QUERY_STRING} ^paginaid=1$ [NC]
RewriteRule ^index\.php$ http://www.example.com? [R=301,NE,NC,L]
知道如何解决这个问题吗?
我的 .htaccess 总数:
RewriteRule ^index.php\?paginaid=1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=2$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=3$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=4$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=5$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=6$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=7$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=8$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=9$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=10$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=12$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=13$ http://www.example.com/ [R=301,L]
RewriteRule ^index.php$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief$ http://www.example.com/ [R=301,L]
#RewriteRule ^argeweb/weblog/2007/18/oebele.php$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2006_9$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2007_1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2008_10$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=categorie&cid=1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2007_5$ http://www.example.com/ [R=301,L]
#RewriteRule ^argeweb/weblog/index.php?page=archief$ http://www.example.com/ [R=301,L]
#RewriteRule ^argeweb/weblog/index.php?page=links$ http://www.example.com/ [R=301,L]
AddDefaultCharset utf-8
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]
RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q= [L,QSA]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ http://www.%1/ [R=permanent,L] .
查询字符串不是匹配项的一部分,因此您需要包含基于 %{QUERY_STRING}
的重写条件。
此外,如果没有向重写位置添加任何内容,.htaccess 似乎会附加原始查询字符串,因此要解决此问题,您可以单独添加一个 ?
.
RewriteCond %{QUERY_STRING} ^paginaid=1$
RewriteRule ^index.php$ http://www.example.com/? [R=301,L]
此外,您的全局 index.php
规则覆盖了 paginaid
规则,因此请将其移至上方。这是使用 paginaid
规则的完整 .htaccess:
AddDefaultCharset utf-8
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^paginaid=1$
RewriteRule ^index.php$ http://www.example.com? [R=302,L]
RewriteCond %{QUERY_STRING} ^paginaid=2$
RewriteRule ^index.php$ http://www.example.com? [R=302,L]
RewriteCond %{QUERY_STRING} ^paginaid=3$
RewriteRule ^index.php$ http://www.example.com/? [R=302,L]
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]
RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q= [L,QSA]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ http://www.%1/ [R=permanent,L] .
出于 SEO 原因,我需要将旧的 URL: /index.php?paginaid=1 重定向到 www.example.com/
但是当我像下面这样尝试时,它变成了 www.example。com/paginaid=1
无效:
RewriteRule ^index.php?paginaid=1$ http://www.example.com/ [R=301,L]
无效:
RewriteCond %{QUERY_STRING} ^paginaid=1$ [NC]
RewriteRule ^index\.php$ http://www.example.com? [R=301,NE,NC,L]
知道如何解决这个问题吗?
我的 .htaccess 总数:
RewriteRule ^index.php\?paginaid=1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=2$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=3$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=4$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=5$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=6$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=7$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=8$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=9$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=10$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=12$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?paginaid=13$ http://www.example.com/ [R=301,L]
RewriteRule ^index.php$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief$ http://www.example.com/ [R=301,L]
#RewriteRule ^argeweb/weblog/2007/18/oebele.php$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2006_9$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2007_1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2008_10$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=categorie&cid=1$ http://www.example.com/ [R=301,L]
#RewriteRule ^index.php?page=archief&aid=2007_5$ http://www.example.com/ [R=301,L]
#RewriteRule ^argeweb/weblog/index.php?page=archief$ http://www.example.com/ [R=301,L]
#RewriteRule ^argeweb/weblog/index.php?page=links$ http://www.example.com/ [R=301,L]
AddDefaultCharset utf-8
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]
RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q= [L,QSA]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ http://www.%1/ [R=permanent,L] .
查询字符串不是匹配项的一部分,因此您需要包含基于 %{QUERY_STRING}
的重写条件。
此外,如果没有向重写位置添加任何内容,.htaccess 似乎会附加原始查询字符串,因此要解决此问题,您可以单独添加一个 ?
.
RewriteCond %{QUERY_STRING} ^paginaid=1$
RewriteRule ^index.php$ http://www.example.com/? [R=301,L]
此外,您的全局 index.php
规则覆盖了 paginaid
规则,因此请将其移至上方。这是使用 paginaid
规则的完整 .htaccess:
AddDefaultCharset utf-8
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^paginaid=1$
RewriteRule ^index.php$ http://www.example.com? [R=302,L]
RewriteCond %{QUERY_STRING} ^paginaid=2$
RewriteRule ^index.php$ http://www.example.com? [R=302,L]
RewriteCond %{QUERY_STRING} ^paginaid=3$
RewriteRule ^index.php$ http://www.example.com/? [R=302,L]
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]
RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q= [L,QSA]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ http://www.%1/ [R=permanent,L] .