.htaccess 使用参数通过htaccess重写URL

.htaccess 使用参数通过htaccess重写URL,.htaccess,.htaccess,我想将我的查询参数URL重写为不带查询参数的URL。我的URL就像 http://www.example.com/pages.php?id=12&url=page-name&page=1 http://www.example.com/tour.php?id=12&url=tour-name&page=1 http://www.example.com/gallery.php?id=12&url=gallery-name&page=1 进入 如何做到

我想将我的查询参数URL重写为不带查询参数的URL。我的URL就像

http://www.example.com/pages.php?id=12&url=page-name&page=1
http://www.example.com/tour.php?id=12&url=tour-name&page=1
http://www.example.com/gallery.php?id=12&url=gallery-name&page=1
进入

如何做到这一点

到目前为止,我试过:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ pages.php?id=$1&Url=$2 [QSA]

我想你想要更像这样的东西:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)/([a-zA-Z0-9_-]+)(?:/([0-9]+))$ $1.php?url=$2&page=$3 [L,QSA]
问题是,外观更好的URL缺少id值,如果没有id值,就无法用id值重写它。Mod rewrite无法凭空将其提取出来,因此您需要将其包含在外观更好的URL中,或者依靠脚本根据URL参数提取页面:

http://www.domain.com/tour/12/tour-name/1

如果您解释一下为什么要这样做,可能会更容易帮助您。嗨,Mats,我不想让用户在url中更改id并将其指向404页面。嗨,Jon,谢谢您的帮助。但它仍然不起作用,它提供404页的服务。
http://www.domain.com/tour/12/tour-name/1