【发布时间】:2011-01-05 01:09:31
【问题描述】:
我的 CMS 中有分页插件,它会生成 ?pg=1 链接。我想在没有这个丑陋的后缀的情况下重定向这个 url,因为没有它 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]
我在正则表达式培训师那里尝试了这个正则表达式代码 - 它有效。但在实时服务器上不会发生重定向。
这是整个 .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>
【问题讨论】:
-
远程服务器上是否启用了
mod_rewrite?如果删除<IfModule mod_rewrite.c>条件会发生什么? -
mod_rewrite 有效 - CMS 成功使用 clean-url
标签: .htaccess mod-rewrite redirect url-rewriting