.htaccess重写规则,最后一个查询字符串追加到url

.htaccess重写规则,最后一个查询字符串追加到url,.htaccess,content-management-system,directoryindex,.htaccess,Content Management System,Directoryindex,嗨,我做了一个cms网站,我需要重写我的url 当前我的url是 它指的是cmsLink 我希望我的url像 我正在使用以下代码 Options +FollowSymLinks Options +Indexes RewriteEngine on RewriteBase / RewriteRule ^index.php?link=(.*)&cmsid=(.*)&cmsLink=(.*) $3 尝试将上一条规则更改为: RewriteRule ^(.+)$ /index.php?l

嗨,我做了一个cms网站,我需要重写我的url

当前我的url是
它指的是cmsLink
我希望我的url像
我正在使用以下代码

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteBase /
RewriteRule ^index.php?link=(.*)&cmsid=(.*)&cmsLink=(.*) $3

尝试将上一条规则更改为:

RewriteRule ^(.+)$ /index.php?link=pages&cmsid=2&cmsLink=$1

由于您希望像url一样,因此url中的
cmsid
link
必须硬编码到
2
页面
,才能使用.htaccess直接获得此url
我在htacess中也使用正则表达式和其他内容

我放置并删除cmsid

当前我的url是


它返回我

cmsid,而link不是硬编码的,我试过像
RewriteRule^([^/]*)/([^/]*)/([^/]*)\$/index.php?link=$1&cmsid=$2&cmsLink=$3[L]
,它给了我类似的输出,但我想要像这样的url如果你想要像example.com/地毯这样的url,那么.htaccess怎么知道值2呢?.htaccess从何处获得值2?对于example.com/Table这样的URL,值2是否始终保持不变?URL重写使用来自传入用户请求的值,并将其重定向到其他URL。因此,所有需要的值都应该是原始请求的一部分。因此,如果
2
不在原始请求(即example.com/地毯)中,则无法在重定向的url(index.php?cmsid=2&cmsLink=地毯)中传递
2
。是的,阿齐兹,这就是我更改php代码并传递唯一的cmsLink并从查询字符串中删除cmsid,然后写入.htaccess的原因
RewriteCond %{REQUEST_URI} !/admin
RewriteCond %{REQUEST_URI} !^/(.*).php
RewriteBase /
RewriteRule ^([^/]+)/?$ index.php?link=pages&cmsLink=$1&%{QUERY_STRING} [L]