首页 文章

网址重写mod_rewrite

提问于
浏览
2

我有这样的网址:

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

我想用apache mod_rewrite将这个url重写为:

page.com/p/q/

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

3 回答

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

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

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

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

    这个适合我,并将 /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]
    
    • 此规则将放在网站根文件夹中的.htaccess中 . 如果放在其他地方,可能需要进行一些小的调整 .

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

相关问题