[英].htaccess RewriteRule won't work!
我在菜单系统中使用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
看起来您在最后一条规则中缺少了$1
:
RewriteRule ^start(.*)\.html$ ?p=start$1
^^^^
编辑新信息后,请尝试:
RewriteCond %{QUERY_STRING} p=([a-z0-9]+) [NC]
RewriteRule . /%1.html [L]
这将从查询字符串中捕获p=
参数,并使用它重写为page.html
尝试
RewriteRule ^start(.*)\.html$ ?p=start$1 [L]
参见末尾的一(1)。
htaccess的工作方式相反。
它使诸如/start.html
代理之类的东西成为?p=start
但是,您仍然可以将链接本身定位为/start.html
。
因此,将所有<a href="?p=start">
更改为<a href="/start.html">
。
你需要
RewriteCond %{QUERY_STRING} ^p=(.+)$ [NC]
RewriteRule ^$ /%1.html? [R=301,L]
R = 301用于更改浏览器中的URL,但是您仍然需要更新站点上的所有链接:
<a href="?p=start">
到<a href="/start.html">
编辑:尝试更新的(在HTML之后有一个?)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.