我在我的菜单系统中使用php switch [_get]来创建url.com/?p=page,我希望将其更改为url.com/page.html。但我不能让它发挥作用,也许你们中的一些人知道正确的设置。
我目前正在使用它作为.htaccess:
RewriteEngine On
RewriteBase /
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^start(.*)\.html$ ?p=start$
谢谢!
更新
我尝试使用$1
,但当我希望?p=start
/start.html
答案 0 :(得分:2)
您似乎错过了上一条规则中的$1
:
RewriteRule ^start(.*)\.html$ ?p=start$1
^^^^
编辑在获得新信息后,请尝试:
RewriteCond %{QUERY_STRING} p=([a-z0-9]+) [NC]
RewriteRule . /%1.html [L]
这会捕获查询字符串中的p=
参数并将其用于重写为page.html
答案 1 :(得分:1)
尝试
RewriteRule ^start(.*)\.html$ ?p=start$1 [L]
见最后的一(1)。
答案 2 :(得分:1)
htaccess反过来工作。
它会使/start.html
代理变为?p=start
,但您仍然可以将链接自定为/start.html
。
因此,请将所有<a href="?p=start">
更改为<a href="/start.html">
。
答案 3 :(得分:1)
你需要
RewriteCond %{QUERY_STRING} ^p=(.+)$ [NC]
RewriteRule ^$ /%1.html? [R=301,L]
R = 301是更改浏览器中的网址,但是 您仍需要更新网站上的所有链接:
<a href="?p=start">
至<a href="/start.html">
编辑:尝试更新的(它有一个?后面的HTML)