首页 > 解决方案 > 删除 .htaccess 中的 GET 参数并获取 2 个 URL

问题描述

我有这种网址:

http://www.example.com/index.php?page=contest&contest=this-one-contest

我正在尝试在这里获取 2 个有效的网址。

  1. 我想要做的是获取这种 URL:

    http://www.example.com/contest

使用这个 htaccess 重写规则已经完成了

RewriteRule ^([a-z_-]+)/([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,QSA]
RewriteRule ^([a-z_-]+)$ index.php?page=$1 [L,QSA]
RewriteRule ^([a-z_-]+)/$ index.php?page=$1 [L,QSA]
  1. 我要做的是在第二个 URL 中获取这种 URL:

    http://www.example.com/contest/this-one-contest

我不知道这是否可以使用 htaccess,而且我不想创建一个名为“contest”的新文件夹。

我已经尝试过了,但它仍然无法正常工作。

RewriteRule ^([a-z_-]+)contest/([a-zA-Z0-9_-]+)$ index.php?page=$1&contest=$2 [L,QSA]
RewriteRule ^([a-z_-]+)contest/$ index.php?page=$1 [L,QSA]
RewriteRule ^([a-z_-]+)contest/$ index.php?page=$1 [L,QSA]

标签: .htaccessmod-rewriteurl-rewriting

解决方案


我终于找到了一个适合我的解决方法,我对@arkascha 解决方案进行了很多自我调整,

RewriteEngine on 
RewriteRule ^/?([a-z_-]+)/([a-zA-Z0-9_-]+)/?$ /index.php?page=$1&contest=$2 [L,QSA] 
RewriteRule ^([a-z_-]+)/$ index.php?page=$1 [L,QSA] 
RewriteRule ^/?contest/?$ /index.php?contest=1$ [L,QSA]

推荐阅读