如何改变我的mod重写规则,以便我可以实现这一目标?

时间:2014-09-17 13:33:17

标签: apache .htaccess mod-rewrite url-rewriting rewrite

我有这个.htaccess文件:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L]

RewriteRule ^([^/.]+)/$ /index.php?go=$1 [L]

如果用户只输入example.com而另一个只是用于处理包含,则有一个规则可以将www添加到域中。

现在让我们说我想访问网址anything(或任何其他名称)。

当我输入这些网址时,他们的工作正常:

  • www.example.com/anything/保持不变。完美。

  • www.example.com/anything重定向到www.example.com/anything/。完美。

  • example.com/anything重定向到www.example.com/anything/完美。

有一件事不起作用:

  • example.com/anything/将网址更改为www.example.com/index.php?go=anything

但我希望它也可以重定向到www.example.com/anything/

是否有人知道如何更改规则以便它也可以使用?

1 个答案:

答案 0 :(得分:1)

保持你的.htaccess像这样:

ErrorDocument 403 /index.php?go=403
ErrorDocument 404 /index.php?go=404
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L]

RewriteRule ^([^/.]+)/$ /index.php?go=$1 [L,QSA]

RewriteCond $0 ^download/([^/.]+)/$
RewriteRule ^([^/.]+)/([^/.]+)/$ /index.php?go=dl&id=$2 [L,QSA]

RewriteCond $0 ^games/([^/.]+)/$
RewriteRule ^([^/.]+)/([^/.]+)/$ /index.php?go=games&game=$2 [L,QSA]

RewriteCond $0 ^tools/([^/.]+)/$
RewriteRule ^([^/.]+)/([^/.]+)/$ /index.php?go=tools&tool=$2 [L]

RewriteCond $0 ^misc/([^/.]+)/$
RewriteRule ^([^/.]+)/([^/.]+)/$ /index.php?go=misc&misc=$2 [L,QSA]

请记住在内部重写规则之前保留重定向规则。