htaccess mod重写规则追加url params

时间:2014-02-16 01:46:02

标签: apache .htaccess mod-rewrite

我有一个非常简单的图库脚本。

索引页面(php)根据url参数加载缩略图视图中的所有图片。我正在尝试使用重写规则来掩盖网址,使它们看起来更好,但我遇到了问题。

索引页面需要a=gallery&name={name of gallery}

重写的工作范围是它将网址重写为/gallery/{name of gallery}

问题是我得到了/gallery/{name of gallery}/?a=gallery&name={name of gallery},这显然是不希望的,也是多余的。

这是我的规则,我一直在搞乱这个问题而且我已经厌倦了查看文档而只是想完成它。

# enables rewrite engine
RewriteEngine on

# we always direct requests to the www subdomain
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# some url rewriting
RewriteRule ^([^/\.]+)$ ?a=$1 [L]
RewriteRule ^([^/\.]+)/$ ?a=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)$ ?a=$1&name=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/$ ?a=$1&name=$2 [L]

编辑:添加完整的htaccess文件...

1 个答案:

答案 0 :(得分:0)

以这种方式试试看看它是如何运作的。

    # enables rewrite engine
    RewriteEngine on

    # we always direct requests to the www subdomain
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

    RewriteCond %{REQUEST_URI} ^/gallery 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^([^/]+)/([^/]+) index.php?url=$1&name=$2 [PT,L] 
    RewriteCond %{REQUEST_URI} ^/gallery 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^([^/]+) index.php?url=$1 [PT,L]