【发布时间】:2014-02-16 23:35:21
【问题描述】:
我有一个具有模式重写的网站。问题是,当重写的 url 中有一个点时,它会导致 404。我从this post 尝试过
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*).(.*)$ /$1$2 [L,R=301]
RewriteRule ^page/cart/([^./]+)/?$ ./index.php?page=cart&$1 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/([^.]+)?/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&catId=$2&subId=$3&id=$4&name=$5 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&catId=$2&subId=$3&name=$4 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&catId=$2&name=$3 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&id=$2 [L,PT]
RewriteRule ^page/([^./]+)/?$ ./index.php?page=$1&name=$2 [L,PT]
RewriteRule ^page/([^./]+)/?$ ./index.php?page=$1 [L,PT]
但它仍然给我 404。我的目标是当我在网址中有点时,永久重定向到没有点的相同网址。
我怎样才能做到这一点?
编辑:
我使用此组合编辑了我的文件以排除所有图像,但似乎第一个条件不适用:
RewriteCond %{REQUEST_URI} !=/(.*)\.(jpg|gif|png|css|js)$ [NC]
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*)\.(.*)$ /$1$2 [L,R=301]
RewriteRule ^page/cart/([^./]+)/?$ ./index.php?page=cart&$1 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/([^.]+)?/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&catId=$2&subId=$3&id=$4&name=$5 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&catId=$2&subId=$3&name=$4 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&catId=$2&name=$3 [L,PT]
RewriteRule ^page/([^.]+)?/([^.]+)?/?$ ./index.php?page=$1&id=$2 [L,PT]
RewriteRule ^page/([^./]+)/?$ ./index.php?page=$1&name=$2 [L,PT]
RewriteRule ^page/([^./]+)/?$ ./index.php?page=$1 [L,PT]
编辑 2:
我发现了我的错误。
第一行应该是RewriteCond %{REQUEST_URI} !\.(jpg|gif|png|css|js)$ [NC] 而不是RewriteCond %{REQUEST_URI} !=(.*)\.(jpg|gif|png|css|js)$ [NC]
谢谢。
【问题讨论】:
-
用
^(.*)[.](.*)$替换^(.*).(.*)$
标签: apache .htaccess mod-rewrite