我的CMS中有分页插件,可生成?pg = 1链接。我想重定向这个网址没有这个丑陋的后缀,因为没有它CMS也显示第一页。
所以,我的网址有http://site.ru/category/schock-crane/?pg=1
或http://site.ru/moyka/?type=granit&pg=1
我想将这些网址重定向到http://site.ru/category/schock-crane/
和http://site.ru/moyka/?type=granit
。
我试过这个.htaccess代码
RewriteRule (.*)(&|\?)pg=1$ $1 [R=301,L]
我在regexp培训师处尝试了这个正则表达式代码 - 它有效。但是在实时服务器上没有重定向。
这是整个.htaccess文件:
AddDefaultCharset Off
#DirectoryIndex index.php index.html
Options +FollowSymLinks
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# fix /?pg=1
RewriteRule (.*)(&|\?)pg=1$ $1 [R=301,L]
# fix .palitra-tab
RewriteCond %{REQUEST_URI} -tab$
RewriteRule (.*)/([0-9]*)/\.(.*)-tab?$ http://site.ru/redirect.php?id=$2 [R=301,L]
RewriteCond %{REQUEST_URI} ^/csss/.* [NC]
RewriteRule csss/(.*)\.css$ css.php?n=$1 [L]
#RewriteRule ^(.*)/csss/(.*) /test.php [L]
RewriteRule ^(.*)/base([0-9]+)/?$ $1?base=$2
#RewriteCond %{REQUEST_FILENAME} -f
#RewriteRule \.(gif|jpeg|jpg|png)$ /images/watermark/index.php [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*) index.php
RewriteCond %{HTTP:Authorization} !^$
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
答案 0 :(得分:0)
您需要使用RewriteCond
来检查查询字符串:
RewriteCond %{QUERY_STRING} ^(([^&]*&)*)pg=1(&(.*)|$)
RewriteCond %1%4 (.*?)&?$
RewriteRule ^ %{REQUEST_URI}?%1 [R=301,L]
第二个RewriteCond
只是删除一个尾随的&
。
答案 1 :(得分:0)
可能缺少^
或/
会导致重定向
# fix /?pg=1
RewriteRule ^(.*)(&|\?)pg=1$ /$1 [R=301,L]
或尝试
RewriteRule ^(.*)(&|\?)pg=1$ http://%{HTTP_HOST}/$1 [R=301,L]