网址重写mod_rewrite

时间:2011-08-26 22:47:17

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

我有以下网址:

 page.com/content.php?xname=p&yname=q&zid=1

我想使用apache mod_rewrite将此url重写为类似:

 page.com/p/q/

注意重命名的url中不应该有'zid'参数。我知道表达式作为GET传递到原始URL中。 是否可以按上述方式重命名。如果是,如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

这个适用于我,并会将/p/q/的请求重写为/content.php?xname=p&yname=q&zid=1

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/$ content.php?xname=$1&yname=$2&zid=1 [QSA,L]
  1. 此规则将放在网站根文件夹中的.htaccess中。如果放在其他地方,可能需要进行一些小的调整。

  2. 如果请求的URL是真实的文件或文件夹,它将不会重写(我确定你不想重写图像或其他一些页面 - 我不得不添加这样的条件,因为我不知道是什么您的网站结构是)。

答案 1 :(得分:1)

RewriteRule   ^content\.php\?xname=(p)&yname=(q)&zid=1$    /$1/$2  [R]

您可以尝试像[a-Z0-9 _-] +这样的表达式来匹配标识符,而不是p和q。

这里有一个在线测试工具:http://civilolydnad.se/projects/rewriterule/

答案 2 :(得分:0)

RewriteEngine On
RewriteRule ^/[a-z0-9]+/[a-z0-9]+/$ content.php?xname=$1&yname=$2 [L]