两件事。
查询字符串不能针对一个重写规则相匹配,所以在你的正则表达式的?
,是一个正则表达式?
量词,意思是s
的“标签”之后是可选的。显然,这不是你想要的。
你重写URL 到/easydiscuss1.htm
,这意味着你会得到一个404,除非该文件easydiscuss1.htm
实际上是在那里。如果它在那里,而且您实际上想要提供文档根目录下的文件“easydiscuss1.htm”,请参阅上面的#1。
否则,你有规则倒退。当你重写某些东西时,你需要一些浏览器请求,然后在服务器上改变它。如果您将其更改为不存在的内容,那么您应该会发现404错误。你可能想要的是沿着这些线路更多:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index\.php/component/easydiscuss/tags\?Itemid=([0-9]+)
RewriteRule^/easydiscuss%2.htm [L,R=301]
将重定向浏览器,告诉它,它请求的资源实际上是somwhere别的。然后,你需要一个规则来更改URL 回:
RewriteRule ^/?easydiscuss([0-9]+)\.htm$ /index.php/component/easydiscuss/tags?Itemid=$1 [L]
编辑
你需要这样的:
RewriteCond %{QUERY_STRING} ^Itemid=1$
RewriteRule ^index.php/component/easydiscuss/tags$ easydiscuss1.htm [L]
非常感谢您深入的答案。我不在寻找动态匹配规则。我从字面上想要重写一个URL。我想在浏览器中输入http://mywebsite.com/index.php/component/easydiscuss/tags?Itemid=1,并将其发送到http://mywebsite.com/easydiscuss1.htm,这当然是存在的。我已经逃脱了?在之前的尝试中有一个反斜杠,但不是期间,我会再试一次。 –
@LucasScholten啊,我编辑了答案,以涵盖#1中的错误 –
非常感谢!你救了我的头发。 –