在您的 容器中尝试此操作:
<Directory "/var/www/vhosts/myhost/htdoc/news-and-events/news/">
RewriteBase "/news-and-events/news/"
RewriteCond "%{QUERY_STRING}" ""
RewriteRule "(.*)" "index.php?id=/$1" [L]
</Directory>
或者,它可以用于.htaccess
file:
File: /news-and-events/news/.htaccess
RewriteBase "/news-and-events/news/"
RewriteCond "%{QUERY_STRING}" ""
RewriteRule "(.*)" "index.php?id=/$1" [L]
在设计的适当路径中使用重写规则对于实现所需的功能至关重要。
怎么运行的
Using 正确的目录for 规则禁止针对其他路径测试规则,这可能会破坏通向它们的请求 URI。此外,仅针对相关请求调用规则,从而节省处理时间。
The 重写库定义什么是“本地”。到目前为止,路径将被裁剪以进行进一步处理。日志:
strip per-dir prefix: /var/www/vhosts/myhost/htdoc/news-and-events/news/
applying pattern '.*' to uri ''
请务必包括最后的/
。 – 否则你会遇到问题!
By the 重写条件我们仅测试QUERY_STRING
存在(这就是之后的一切?
在网址中。 ——本题场景中一定不存在,但处理后会存在。 — 这将禁止 URI 在重写后进行正向匹配,并将第二次通过重写过滤器。
The 重写规则粘合缺失的部分以生成 URI?id=/
“本地化”URI。重写步骤完成后,URI 的全局部分将被添加到新的完整 REQUEST_URI 之前。
而不是插入index.php?id=/
仅使用?id=/
本来就足以完成这项工作,但是通过添加 apache 下一步的答案“什么是正确的索引文件?”节省了处理请求的几个步骤,加快了速度。
Using [L]
(保留重写规则)而不是[R=301,L](资源永久移动,保留)将阻止搜索引擎学习新的URI,并且还禁止重写的URI显示在地址栏中。在内部,这是一个 302(临时重定向)。日志:
redirect to http://example.com/news-and-events/news/index.php?id=/kanp...8c758 [REDIRECT/302]
需要一个对应的人
任务是“美化地址”。因此,生成 URI 的 PHP 脚本必须更改其行为,以发出访问者和搜索引擎应该看到并单击的美化 URI。
在 php 脚本中的某个位置,URL 生成的处理结果类似于
<?php
// ....
news_path = "/news-and-events/news/";
news_uri = "/kanpa...8c758";
final_news_link = $news_path . "id=" . $news_uri;
?>
的组装final_news_link
必须改为
final_news_link = $news_path . $news_uri;
所以美化后的地址将会被公布。